長沙IT培訓程序員面試題:Object函數
今年又到了求職的黃金季節,所以千鋒長沙老師嘔心瀝血寫下了這篇IT培訓程序員面試題:Object函數,我希望通過這篇文章能幫大家提高求職成功率。
Object.assign()
Object.assign();通過復制一個或多個對象來創建一個新的對象。
語法:Object.assign(target, ...sources)
參數: target 目標對象。 sources 源對象
返回值:目標對象。
如果目標對象中的屬性具有相同的鍵,則屬性將被源對象中的屬性覆蓋。后面的源對象的屬性將類似地覆蓋前面的源對象的屬性。
Object.assign 方法只會拷貝源對象自身的并且可枚舉的屬性到目標對象。該方法使用源對象的[[Get]]和目標對象的[[Set]],所以它會調用相關 getter 和 setter。因此,它分配屬性,而不僅僅是復制或定義新的屬性。如果合并源包含getter,這可能使其不適合將新屬性合并到原型中。
為了將屬性定義(包括其可枚舉性)復制到原型,應使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。
- 注意,Object.assign 不會在那些source對象值為 null 或 undefined 的時候拋出錯誤。
復制代碼
Object.create()
Object.create();使用指定的原型對象和屬性創建一個新對象。
語法:Object.create(proto[, propertiesObject])
參數:proto 新創建對象的原型對象。propertiesObject 可選。如果沒有指定為 undefined,則是要添加到新創建對象的可枚舉屬性(即其自身定義的屬性,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應的屬性名稱。這些屬性對應Object.defineProperties()的第二個參數。
返回值:一個新對象,帶著指定的原型對象和屬性。
注意:如果propertiesObject參數是 null 或非原始包裝對象,則拋出一個 TypeError 異常
復制代碼
Object.defineProperty()
Object.defineProperty();給對象添加一個屬性并指定該屬性的配置。
語法:Object.defineProperty(obj, prop, descriptor)
參數:obj 要在其上定義屬性的對象。prop 要定義或修改的屬性的名稱。descriptor 將被定義或修改的屬性描述符。
返回值:被傳遞給函數的對象。
該方法允許精確添加或修改對象的屬性。通過賦值操作添加的普通屬性是可枚舉的,能夠在屬性枚舉期間呈現出來(for...in 或 Object.keys 方法),這些屬性的值可以被改變,也可以被刪除。這個方法允許修改默認的額外選項(或配置)。默認情況下,使用 Object.defineProperty() 添加的屬性值是不可修改的。
Object.defineProperties()
Object.defineProperties();給對象添加多個屬性并分別指定它們的配置。
語法:Object.defineProperties(obj, props)
參數:obj 在其上定義或修改屬性的對象。
props 要定義其可枚舉屬性或修改的屬性描述符的對象。對象中存在的屬性描述符主要有兩種:數據描述符和訪問器描述符(更多詳情,請參閱Object.defineProperty())。
返回值:傳遞給函數的對象。
Object.entries()
Object.entries();返回給定對象自身可枚舉屬性的 [key, value] 數組。
語法:Object.entries(obj)
參數:obj 可以返回其可枚舉屬性的鍵值對的對象。
返回值:給定對象自身可枚舉屬性的鍵值對數組。
Object.entries()返回一個數組,其元素是與直接在object上找到的可枚舉屬性鍵值對相對應的數組。
屬性的順序與通過手動循環對象的屬性值所給出的順序相同。
Object.freeze()
** Object.freeze();凍結對象:其他代碼不能刪除或更改任何屬性。**
語法:Object.freeze(obj)
參數:obj 要被凍結的對象。
返回值:被凍結的對象。
數據屬性的值不可更改,訪問器屬性(有getter和setter)也同樣(但由于是函數調用,給人的錯覺是還是可以修改這個屬性)。如果一個屬性的值是個對象,則這個對象中的屬性是可以修改的,除非它也是個凍結對象。數組作為一種對象,被凍結,其元素不能被修改。沒有數組元素可以被添加或移除。這個方法返回傳遞的對象,而不是創建一個被凍結的副本。
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptor();返回對象指定的屬性配置。
語法:Object.getOwnPropertyDescriptor(obj, prop)
參數:obj 需要查找的目標對象props 目標對象內屬性名稱
返回值:如果指定的屬性存在于對象上,則返回其屬性描述符對象(property descriptor),否則返回 undefined。
Object.getOwnPropertyNames()
Object.getOwnPropertyNames();返回一個數組,它包含了指定對象所有的可枚舉或不可枚舉的屬性名。
語法:Object.getOwnPropertyNames(obj)
參數:obj 一個對象,其自身的可枚舉和不可枚舉屬性的名稱被返回。
返回值:在給定對象上找到的自身屬性對應的字符串數組。
Object.getOwnPropertySymbols()
Object.getOwnPropertySymbols();返回一個數組,它包含了指定對象自身所有的符號屬性。
語法:Object.getOwnPropertySymbols(obj)
參數:obj 要返回 Symbol 屬性的對象。
返回值:在給定對象自身上找到的所有 Symbol 屬性的數組。
Object.getPrototypeOf()
Object.getPrototypeOf();返回指定對象的原型對象。
語法:Object.getPrototypeOf(object)
參數:obj 要返回其原型的對象。
返回值:給定對象的原型。如果沒有繼承屬性,則返回 null 。
Object.is()
Object.is();比較兩個值是否相同。所有 NaN 值都相等(這與==和===不同)。
語法:Object.is(value1, value2);
參數:value1 第一個需要比較的值。value2 第二個需要比較的值。
返回值:表示兩個參數是否相同的布爾值 。
這種相等性判斷邏輯和傳統的==運算不同,==運算符會對它兩邊的操作數做隱式類型轉換(如果它們類型不同),然后才進行相等性比較,(所以才會有類似 "" == false 等于 true 的現象),但 Object.is 不會做這種類型轉換。這與 === 運算符的判定方式也不一樣。=== 運算符(和== 運算符)將數字值 -0 和 +0 視為相等,并認為 Number.NaN 不等于 NaN。
Object.isExtensible()
Object.isExtensible();判斷對象是否可擴展。
語法:Object.isExtensible(obj)
參數:obj 需要檢測的對象
返回值: 表示給定對象是否可擴展的一個Boolean 。默認情況下,對象是可擴展的:即可以為他們添加新的屬性。以及它們的 __proto__ 屬性可以被更改。
Object.preventExtensions,Object.seal 或 Object.freeze 方法都可以標記一個對象為不可擴展(non-extensible)。
Object.isFrozen()
Object.isFrozen();判斷對象是否已經凍結。
語法:Object.freeze(obj)
參數:obj 要被凍結的對象。
返回值: 被凍結的對象。
Object.isSealed()
Object.isSealed();判斷對象是否已經密封。
語法:Object.isSealed(obj)
參數:obj要被檢查的對象。
返回值: 表示給定對象是否被密封的一個Boolean 。
Object.keys()
Object.keys();返回一個包含所有給定對象自身可枚舉屬性名稱的數組。
語法:Object.keys(obj)
參數:obj要返回其枚舉自身屬性的對象。
返回值: 一個表示給定對象的所有可枚舉屬性的字符串數組。
Object.keys 返回一個所有元素為字符串的數組,其元素來自于從給定的object上面可直接枚舉的屬性。這些屬性的順序與手動遍歷該對象屬性時的一致。
Object.preventExtensions()
Object.preventExtensions()防止對象的任何擴展。
語法:Object.preventExtensions(obj)
參數:obj將要變得不可擴展的對象。
返回值: 已經不可擴展的對象。
Object.seal()
Object.seal();防止其他代碼刪除對象的屬性。
語法:Object.seal(obj)
參數:obj將要被密封的對象。
返回值: 被密封的對象。
Object.setPrototypeOf()
Object.setPrototypeOf();設置對象的原型(即內部 [[Prototype]] 屬性)。
語法:Object.setPrototypeOf(obj, prototype)
參數:obj要設置其原型的對象。prototype 該對象的新原型(一個對象 或 null).
Object.values()
Object.values();返回給定對象自身可枚舉值的數組。
語法:Object.values(obj)
參數:obj被返回可枚舉屬性值的對象。
返回值:一個包含對象自身的所有可枚舉屬性值的數組。
Object.values()返回一個數組,其元素是在對象上找到的可枚舉屬性值。
屬性的順序與通過手動循環對象的屬性值所給出的順序相同。
復制代碼
總結:Object.assign() 方法用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象。它將返回目標對象。Object.create()方法創建一個新對象,使用現有的對象來提供新創建的對象的__proto__。
Object.defineProperties() 方法直接在一個對象上定義新的屬性或修改現有屬性,并返回該對象。Object.defineProperty() 方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 并返回這個對象。Object.entries()方法返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用 for...in 循環遍歷該對象時返回的順序一致(區別在于 for-in 循環也枚舉原型鏈中的屬性)。
Object.freeze() 方法可以凍結一個對象。一個被凍結的對象再也不能被修改;凍結了一個對象則不能向這個對象添加新的屬性,不能刪除已有屬性,不能修改該對象已有屬性的可枚舉性、可配置性、可寫性,以及不能修改已有屬性的值。此外,凍結一個對象后該對象的原型也不能被修改。freeze() 返回和傳入的參數相同的對象。Object.fromEntries() 方法把鍵值對列表轉換為一個對象。
Object.getOwnPropertyDescriptor() 方法返回指定對象上一個自有屬性對應的屬性描述符。(自有屬性指的是直接賦予該對象的屬性,不需要從原型鏈上進行查找的屬性)Object.getOwnPropertyNames()方法返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數組。
Object.getOwnPropertySymbols() 方法返回一個給定對象自身的所有 Symbol 屬性的數組。Object.getPrototypeOf() 方法返回指定對象的原型(內部[[Prototype]]屬性的值)。Object.is() 方法判斷兩個值是否是相同的值。
Object.isExtensible() 方法判斷一個對象是否是可擴展的(是否可以在它上面添加新的屬性)。
Object.isFrozen()方法判斷一個對象是否被凍結。Object.isSealed() 方法判斷一個對象是否被密封。Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in 循環遍歷該對象時返回的順序一致 。Object.preventExtensions()方法讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性。Object.prototype 屬性表示 Object 的原型對象。
Object.seal()方法封閉一個對象,阻止添加新屬性并將所有現有屬性標記為不可配置。當前屬性的值只要可寫就可以改變。Object.setPrototypeOf() 方法設置一個指定的對象的原型 ( 即, 內部[[Prototype]]屬性)到另一個對象或 null。Object.values()方法返回一個給定對象自身的所有可枚舉屬性值的數組,值的順序與使用for...in循環的順序相同 ( 區別在于 for-in 循環枚舉原型鏈中的屬性 )。

猜你喜歡LIKE
最新文章NEW
相關推薦HOT
更多>>熱門推薦
參加完長沙Java培訓班之后怎么面試找工作?
沸參加長沙IT培訓好找工作嗎?這些環節能刷掉70%大學生
熱參加長沙Java培訓跳槽去大廠,都有哪些面試要求?
熱千鋒長沙前端培訓分享之高級前端面試題整理
新千鋒長沙前端培訓分享之中級前端面試題整理
千鋒長沙前端培訓分享之初級前端面試題整理
千鋒長沙前端培訓:Vue相關面試題
長沙Java培訓:高并發編程JUC包面試題及答案
長沙Java培訓:Java開發實用的面試題及答案
長沙Java培訓:2021年Java面試題分享
長沙Java培訓:2021Java面試題分享
長沙千鋒整理:軟件測試中頻率最高的網絡協議面試題,收好了!
長沙IT培訓學員整理:程序員面試10條潛規則
自學前端靠這份面試題和答案,也能拿高薪!