ES6对象的扩展及新增方法的内容是什么

  介绍

这篇文章主要介绍ES6对象的扩展及新增方法的内容是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强> 1,属性的简洁表示法

ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。

const foo=& # 39;酒吧# 39;;   const巴兹={foo};   巴兹//{foo: & # 39;酒吧# 39;}//等同于   const巴兹={foo: foo}

上面代码表明,ES6允许在对象之中,直接写变量。这时,属性名为变量名,属性值为变量的值。下面是另一个例子。

函数f (x, y) {   返回{x, y}   }//等同于   函数f (x, y) {   返回{x, x, y, y};   }   f (1、2)//{x: 1, y: 2}

除了属性简写,方法也可以简写。

const o={   方法(){   返回& # 39;你好! & # 39;   }   }//等同于   const o={   方法:函数(){   返回& # 39;嗨# 39;;   }   }

下面是一个实际的例子。

让出生=& # 39;2000/01/01& # 39;;   const人={   名称:& # 39;张三& # 39;,//等同于出生:出生   出生,//等同于你好:函数()....   你好(){   console.log(& # 39;我的名字是& # 39;,this.name)   }   }

这种写法用于函数的返回值,将会非常方便。

函数getPoint () {   const x=1;   const y=10;   返回{x, y}   }   getPoint ()//{x: 1, y: 10}

CommonJS模块输出一组变量,就非常合适使用简洁写法。

让女士={};   函数getItem(关键){   返回键在女士吗?(例子)女士:零;   }   函数setItem(关键字,值){   女士(例子)=价值;   }   函数clear () {   女士={}   }   模块。出口={getItem setItem,清楚};//等同于   模块。出口={   getItem: getItem,   setItem: setItem,   clearLclear   }

属性的赋值器(setter)和取值器(getter)事实上也是采用这种写法。

const车={   _wheels: 4   把轮子(){   返回this._wheels;   },   设置轮子(价值){   如果(value

<强> 2。属性名表达式

JavaScript定义对象的属性,有两种方法。

//方法一   obj。foo=true;//方法二   obj[& # 39;一个# 39;+ & # 39;公元前# 39;]=123;

上面代码的方法一是直接用标识符作为属性名,方法二是用表达式作为属性名,这时将表达式放在方括号之内。
但是,如果使用字面量定义对象(使用大括号),在ES5中只能使用方法一(标识符)定义属性。

var obj={   foo:没错,   美国广播公司(abc): 123   }

ES6允许字面量定义对象时,用方法二作为对象的属性名,即把表达式放在括号内。

让propKey=& # 39; foo # 39;;   让obj={   [propKey]:没错,   [& # 39;一个# 39;+ & # 39;公元前# 39;):123   }

下面是另一个例子:

让lastWord=& # 39;最后一个词# 39;;   const={   & # 39;第一个词# 39;:& # 39;你好# 39;   [lastWord]: & # 39; & # 39;   };   [& # 39;第一个词# 39;]//你好   [lastWord]//世界   [& # 39;最后一个词# 39;]//世界

表达式还可以用于定义方法名。

让obj={   [& # 39;h # 39; + & # 39;嗨# 39;](){   返回& # 39;你好# 39;   }   }   obj.hello()//嗨;

注意:

属性名表达式与简洁表示法,不能同时使用,会报的错。   属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串(对象对象),这一点要特别小心。 const keyA={: 1};   const keyB={b: 2};   const myObject={   [keyA]: & # 39; valueA& # 39;   [keyB]: & # 39; valueB& # 39;   };   {myObject;//对象(对象对象):“valueB"}

上面代码中,[keyA]和[keyB]得到的都是对象的对象,所以[keyB]会把[keyA]覆盖掉,而myObject最后只有一个对象(对象)属性。

<强>方法的名字属性

函数的名字属性,返回函数名。对象方法也是函数,因此也有名字属性。

const人={   sayName () {   console.log(& # 39;你好! & # 39;);   },   };      person.sayName.name//皊ayName"

ES6对象的扩展及新增方法的内容是什么