欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

prototype與__proto__區(qū)別詳細介紹

 更新時間:2017年01月09日 10:23:24   投稿:lqh  
這篇文章主要介紹了prototype與__proto__區(qū)別詳細介紹的相關資料,需要的朋友可以參考下

prototype與__proto__區(qū)別

Each constructor is a function that has a property named “prototype” that is used to implement prototype-based inheritance and shared properties. Every object created by a constructor has an implicit reference (called the object's prototype) to the value of its constructor's “prototype” property.
When a constructor creates an object, that object implicitly references the constructor's prototype property for the purpose of resolving property references. The constructor's prototype property can be referenced by the program expression constructor.prototype, and properties added to an object's prototype are shared, through inheritance, by all objects sharing the prototype. Alternatively, a new object may be created with an explicitly specified prototype by using the Object.create built-in function. –ECMAScript® 2015 Language Specification

__proto__是每個對象都有的一個屬性,而prototype是函數才會有的屬性!!!

使用Object.getPrototypeOf()代替__proto__!!!

一、prototype

幾乎所有的函數(除了一些內建函數)都有一個名為prototype(原型)的屬性,這個屬性是一個指針,指向一個對象,而這個對象的用途是包含可以有特定類型的所有實例共享的屬性和方法。prototype是通過調用構造函數而創(chuàng)建的那個對象實例的原型對象。hasOwnProperty()判斷指定屬性是否為自有屬性;in操作符對原型屬性和自有屬性都返回true。

示例:自有屬性&原型屬性

var obj = {a: 1};
obj.hasOwnProperty("a"); // true
obj.hasOwnProperty("toString"); // false
"a" in obj; // true
"toString" in obj; // true

示例:鑒別原型屬性

function hasPrototypeProperty(obj, name){
  return name in obj && !obj.hasOwnProperty(name);
}

二、__proto__

對象具有屬性__proto__,可稱為隱式原型,一個對象的隱式原型指向構造該對象的構造函數的原型,這也保證了實例能夠訪問在構造函數原型中定義的屬性和方法。

function Foo(){}
var Boo = {name: "Boo"};
Foo.prototype = Boo;
var f = new Foo();

console.log(f.__proto__ === Foo.prototype); // true
console.log(f.__proto__ === Boo);  // true
Object.getPrototypeOf(f) === f.__proto__;  // true

三、Object.getPrototypeOf()

一個對象實例通過內部屬性[[Prototype]]跟蹤其原型對象。使用原型對象的好處是可以讓所有對象實例共享它所包含的屬性和方法??梢哉{用對象的Object.getPrototypeOf()方法讀取[[Prototype]]屬性的值,也可以使用isPrototypeOf()方法檢查某個對象是否是另一個對象的原型對象。大部分JavaScript引擎在所有對象上都支持一個名為__proto__的屬性,該屬性可以直接讀寫[[Prototype]]屬性。

示例:原型對象

function Person(name) {
  this.name = name;
}
Person.prototype = {
  constructor: Person,
  sayName: function(){
    console.log("my name is " + this.name);
  }
}
var p1 = new Person("ligang");
var p2 = new Person("Camile");
p1.sayName();  // my name is ligang
p2.sayName();  // my name is Camile

While Object.prototype.proto is supported today in most browsers, its existence and exact behavior has only been standardized in the ECMAScript 6 specification as a legacy feature to ensure compatibility for web browsers. For better support, it is recommended that only Object.getPrototypeOf() be used instead. –MDN

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • 全面了解javascript中的錯誤處理機制

    全面了解javascript中的錯誤處理機制

    下面小編就為大家?guī)硪黄媪私鈐avascript中的錯誤處理機制。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 腳本控制自適應高度的縮短問題

    腳本控制自適應高度的縮短問題

    腳本控制自適應高度的縮短問題...
    2007-10-10
  • JavaScript導航腳本判斷當前導航

    JavaScript導航腳本判斷當前導航

    這篇文章主要介紹了JavaScript導航腳本判斷當前導航的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 深入理解 TypeScript Reflect Metadata

    深入理解 TypeScript Reflect Metadata

    這篇文章主要介紹了深入理解 TypeScript Reflect Metadata,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 微信小程序實現日歷簽到

    微信小程序實現日歷簽到

    這篇文章主要為大家詳細介紹了微信小程序實現日歷簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 常用的Javascript設計模式小結

    常用的Javascript設計模式小結

    javascript設計模式有很多種,本文給大家介紹常用的javascript設計模式,對javascript設計模式相關知識感興趣的朋友一起學習吧
    2015-12-12
  • JS代碼判斷集錦大全

    JS代碼判斷集錦大全

    本文通過實例代碼給大家介紹了js代碼判斷的方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2007-12-12
  • js正文內容高亮效果的實現方法

    js正文內容高亮效果的實現方法

    這篇文章介紹了js正文內容高亮效果的實現方法,有需要的朋友可以參考一下
    2013-06-06
  • JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解

    JavaScript實現二叉樹的先序、中序及后序遍歷方法詳解

    這篇文章主要介紹了JavaScript實現二叉樹的先序、中序及后序遍歷方法,結合實例形式總結分析了javascript二叉樹的先序、中序及后序遍歷實現方法與相關操作注意事項,需要的朋友可以參考下
    2017-10-10
  • 微信小程序用戶授權、位置授權及獲取微信綁定手機號

    微信小程序用戶授權、位置授權及獲取微信綁定手機號

    這篇文章主要介紹了信小程序用戶授權、位置授權及獲取微信綁定手機號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07

最新評論