javascript有哪些常用的属性和方法(js定义属性)

JavaScript 属性类型分为两种:数据属性访问器属性。虽然我们在 JavaScript 中不能直接访问它们,但这些属性会被 JavaScript 引擎使用。

为了表示属性是内部值,把它们放在了两对方括号里 [[\\’特性值\\’]] 。

数据属性和访问器属性各自有四个描述行为的特性。

一般我们不需要重新定义这些属性的,它们都有各自的默认值。

  • 共用属性(数据属性和访问器属性)

Configurabe => 指能否通过 delete 删除属性从而重新定义属性,能否更改属性的特性,能否把属性修改为「访问器属性」,默认为 true。

Enumerable => 指能否通过 for-in 循环返回属性,默认为 true。

  • 数据属性

Writable => 表示能否修改属性的值,默认为 true。

Value => 指属性的数据值,我们访问数据的时候就是从这里获取的值,写入值的时候,也是写入到 Value。

  • 访问器属性

Get => 在读取属性的时候调用的函数。默认为 undefined。

Set => 在写入属性的时候调用的函数。默认为 undefined。


如果项目有需求,我们可以使用 Object.defineProperty() 方法,修改属性默认的特性,此属性接收三个参数:属性所在的对象、属性的名字和一个描述符对象。

1、Configurabe

var web = {};Object.defineProperty(web,\\\'name\\\',{    configurabe:false,    value:\\\'javaScript\\\'})console.log(web.name);//输出 javaScriptdelete web.name;console.log(web.name);//输出 javaScript

Configurabe 设置 false 后「delete删除」不生效。

2、Enumerable

var web = {a: 1, b: 2};Object.defineProperty(web, \\\'c\\\', {    enumerable: false,    value: 3,});console.log(web);//输出 {a: 1, b: 2, c: 3}var webCopy = {};for( var key in web ){    webCopy[key] = web[key];}console.log(webCopy);//输出 {a: 1, b: 2}

Enumerable 设置 false 后「for循环」不会返回属性。

3、Writable

var web = {};Object.defineProperty(web, \\\'name\\\', {    writable: false,    value: \\\'javaScript\\\',});console.log(web.name);//输出 javaScriptweb.name = \\\'javaScript-updata\\\'console.log(web.name);//输出 javaScript

Writable 设置 false 后,属性值不可写入。

4、Get

    var web = {    _text:\\\'javaScript\\\'};Object.defineProperty(web,\\\"text\\\",{     get:function () {        console.log(this._text);    }});web.text;//输出 javaScript

    Get 定义了方法,返回 web._text 的值,web.text 不可修改,只能读取。

    5、Set

    
    
      var web = {    _text:\\\'javaScript\\\'};Object.defineProperty(web,\\\"text\\\",{    get:function () {        console.log(this._text);    },    set:function(newvalue){        if( newvalue === \\\'javaScript\\\' ){            this._text = \\\'javaScript-updata\\\';        }    }});//条件一web.text = \\\'javaScript\\\';web.text;//输出 javaScript-updata//条件一 结束//条件二web.text = \\\'javaScript-dont-set\\\';web.text;//输出 javaScript//条件二 结束

      如果设置了 Set 方法,在赋值的时候就会走方法。web.text 赋值后,进入 if 判断 newvalue === \\’javaScript\\’ ,如果为 true ,就去修改 web._text 的值,然后由 Get 返回数据。


      数据属性的 Writable、Value 和 访问器属性的 Get、Set 不可同时设置。Writable、Value存在的时候,Get、Set不能存在。

      在属性设置的时候,你设置了哪些参数,也就相当于设定了它们属于哪种类型。


      参考资料

      《javaScript 高级程序设计》

      原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34616.html

      (0)
      小道研究的头像小道研究
      上一篇 2024年4月21日
      下一篇 2024年4月21日

      相关推荐

      发表回复

      您的电子邮箱地址不会被公开。 必填项已用 * 标注