es6物件增加新的屬性是「name」。 name屬性可以取得物件上方法(函數)的名字,例「getName() {console.log(this.name);}」;函數直接呼叫name就會傳回函數名,而字面量物件上的方法也是函數,因此也有name屬性。如果物件的方法是一個Symbol值,那麼name屬性回傳的是帶中括號的Symbol的描述內容。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
JavaScript 中物件是非常重要的資料結構,ES6 對物件進行了極大的擴展,使用上也更加簡潔。其中es6物件增加新的屬性是「name」。
物件方法的 name 屬性
你有沒有想過怎麼取得物件上方法的名字? ES6 增加了函數的 name 屬性,函數直接呼叫 name 會傳回函數名稱。字面量物件上的方法也是函數,因此也有 name 屬性。如下實例:
var person = { name: "Jack", getName() { console.log(this.name); }, }; person.getName.name // "getName"
上面程式碼中,getName()
方法的name
屬性傳回函數名稱(即方法名稱)
有兩種特殊情況:
Function 建構子所創造的函數,name 屬性傳回「anonymous」;
bind 方法創造的函數,name 屬性傳回“bound” 加上原函數的名字。
(new Function()).name // "anonymous" var doSomething = function() { // todo }; doSomething.bind().name // "bound doSomething"
如果物件的方法是一個 Symbol 值,那麼 name
屬性傳回的就是帶有中括號的 Symbol 的描述內容。
const key1 = Symbol('description content'); const key2 = Symbol(); let obj = { [key1]() {}, [key2]() {}, }; obj[key1].name // "[description content]" obj[key2].name // ""
擴展知識:es6物件中屬性的改進
1、簡潔的屬性表達
ES6 允許直接寫入變數和函數,作為物件的屬性和方法
1.1 屬性值簡寫
在ES5 中我們知道,在定義物件時屬性的值是必須要寫的,在ES6 中規定,如果屬性名和定義的變數名稱是一樣的,就可以在物件中直接寫這個變數名作為物件中的一項。如下:
var name = 'imooc'; // ES5 var obj1 = { name: name, } // ES6 var obj2 = { name, }
上面程式碼中的 obj1 和 obj2 是一樣的意思。變數 name 可以直接寫在大括號中。這時,屬性名就是變數名,屬性值就是變數值。
下面我們來看一個在函數中傳回一個物件的實例:
// ES5 function getObj(x, y) { return {x: x, y: y}; } // 等同于 ES6 function getObj(x, y) { return {x, y}; } getObj(1, 2) // {x: 1, y: 2}
上面中的程式碼可以看出,在我們平常開發中,組裝資料時是非常方便、有用的。
1.2 物件中方法的簡寫
除了屬性可以簡寫,物件中的方法也是可以簡寫的,而且更加簡潔明了。讓我們來看下面的範例:
const name = '张三' // ES5 var person = { name: name, getName: function() { console.log('imooc') } }; // ES6 var person = { name, getName() { console.log(this.name) } }; console.log(person) // {name: "imooc", getName: ƒ}
上面的程式碼中,ES5 中定義一個物件上的方法時需要使用 function 關鍵字來定義,而 ES6 則直接省略了 冒號和 function 關鍵字。可以看出使用 ES6 這種簡潔的方式更具表達力。
在 Node 中進行模組匯出時,這種方式更方便。我們看下面的例子:
var person = {}; function getName () { return person.name } function setName () { person.name = '李四' } function clear () { person = {}; } // ES5 写法 module.exports = { getName: getName setName: setName, clear: clear }; // ES6写法 module.exports = { getName, setName, clear };
上面的程式碼中,我們定義了一個person 對象,並向外暴露了若干方法用來操作person 對象,在導出的時候可以看出,ES6 不需要重複地去寫變數名,從而更簡潔地表達了模組所提供的方法。
2、簡潔的屬性表達
在 JavaScript 中定義物件的屬性,一般有兩種方法。如下:
// 方法一 obj.name = 'imooc'; // 方法二 obj['a' + 'ge'] = 7;
上面的程式碼中,方法一直接使用標識符進行賦值操作,這是我們比較常用的賦值運算,但是如果屬性是表達式時,則可以使用方法二,把表達式式寫在中括號中。
但是在 ES5 定義字面量物件時不能使用表達式作為字面量物件的屬性,只能透過第一種方式(標識符)來定義屬性。
var obj = { name: 'imooc', age: 7 }
ES6 對物件的屬性進行了擴展,可以覆寫更多的場景,屬性可以使用變數的形式來定義,如下:
var key = 'name'; var obj = { [key]: 'imooc', ['a' + 'ge']: 7 }
上面的程式碼中字面量物件中的屬性是可以放在中括號中,中括號中的可以是變量,也可以是表達式。這無疑是擴展了屬性的功能,使程式設計更加靈活。
另外,屬性也可以是一個有空格的字串,在取值時在中括號中可以直接使用字串,也可以使用變數。如下:
var str = 'first name'; var obj = { ['I love imooc']: 'ES6 Wiki', [str]: 'Jack' } console.log(obj['I love imooc']) // ES6 Wiki console.log(obj[str]) // Jack console.log(obj['first name']) // Jack
表達式也可以用來定義物件上的方法名稱。
var person = { name: 'Jack', ['get' + 'Name']() { console.log(this.name) } }; console.log(person.getName()) // Jack
注意 1: 屬性名稱運算式與屬性簡潔表示,不能同時使用,會報錯。
// 报错 var name = 'Jack'; var age = 18; var person = { [name] }; // Uncaught SyntaxError: Unexpected token '}'
上面的程式碼會有語法錯誤
##注意2: 屬性名稱必須是字串型別的,如果屬性表達式是一個對象,則會先調 toString() 先將對象轉為字串,然後才進行使用。var key1 = {name: 'imooc'}; var key2 = {age: 7}; var obj = { [key1]: 'value content 1', [key2]: 'value content 2', } console.log(obj) // {[object Object]: "value content 2"}上面程式碼中定義了兩個變數都是物件類型的,在呼叫 toString() 時會變成 [object Object] 屬性相同。所以,後面的屬性把前面的覆蓋了。
注意 3: 如果属性的表达式是数组时,则和对象不一样。数组在 toString() 后会变成一个字符串,所以对象属性的表达式就是一个字符串。
var keys = ['imooc', '7']; var obj = { [keys]: 'value content', } console.log(key.toString()) // "imooc,7" console.log(obj) // {imooc,7: "value content"} console.log(obj[keys]) // "value content"
上面的代码中可以看出来,数组 keys 在 toString() 得到了 imooc,7 作为 obj 的属性。另外,我们也可以直接使用 keys 获取 obj 对象上的值。
【推荐学习:javascript视频教程】
以上是es6物件增加新的屬性是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React是構建交互式前端體驗的首選工具。 1)React通過組件化和虛擬DOM簡化UI開發。 2)組件分為函數組件和類組件,函數組件更簡潔,類組件提供更多生命週期方法。 3)React的工作原理依賴虛擬DOM和調和算法,提高性能。 4)狀態管理使用useState或this.state,生命週期方法如componentDidMount用於特定邏輯。 5)基本用法包括創建組件和管理狀態,高級用法涉及自定義鉤子和性能優化。 6)常見錯誤包括狀態更新不當和性能問題,調試技巧包括使用ReactDevTools和優

React是一個用於構建用戶界面的JavaScript庫,其核心是組件化和狀態管理。 1)通過組件化和狀態管理簡化UI開發。 2)工作原理包括調和和渲染,優化可通過React.memo和useMemo實現。 3)基本用法是創建並渲染組件,高級用法包括使用Hooks和ContextAPI。 4)常見錯誤如狀態更新不當,可使用ReactDevTools調試。 5)性能優化包括使用React.memo、虛擬化列表和CodeSplitting,保持代碼可讀性和可維護性是最佳實踐。

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

React組件可以通過函數或類定義,封裝UI邏輯並通過props接受輸入數據。 1)定義組件:使用函數或類,返回React元素。 2)渲染組件:React調用render方法或執行函數組件。 3)復用組件:通過props傳遞數據,構建複雜UI。組件的生命週期方法允許在不同階段執行邏輯,提升開發效率和代碼可維護性。

React嚴格模式是一種開發工具,可通過激活其他檢查和警告來突出反應應用中的潛在問題。它有助於識別遺產代碼,不安全的生命週期和副作用,鼓勵現代反應實踐。

本文討論了React的對帳過程,詳細介紹了它如何有效地更新DOM。關鍵步驟包括觸發對帳,創建虛擬DOM,使用擴散算法以及應用最小的DOM更新。它還覆蓋了經家


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境