国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

理解JavaScript的prototype屬性

2024-05-06 14:22:31
字體:
來源:轉載
供稿:網(wǎng)友
其實,關于prototype只要幾句話就可以總結:
任何原型都是對象,只有對象有原型
只有Function有prototype屬性,它是這個Function作為構造器時生成對象所繼承的原型。Function的原型和它的prototype屬性無關
對象的原型可以通過非標準的屬性 __proto__ 或ECMAScript5的方法 Object.getPrototypeOf() 訪問。
1其實是錯的,Object這個原型鏈盡頭的對象它沒有原型。可是為了更簡單表述。在看原型鏈后你就會明白.toString()這類沒有定義過的方法是怎樣來的。
上面說的二義性,是文字理解上的,語法本身沒有歧義。prototype是原型的意思,可是一個對象的原型不是由prototype去訪問。
Function有prototype屬性,可是和自己的原型沒有關系。理解這點后,再去看關于原型鏈、繼承的文章就容易理解多了。

下面是些例子,可以加深認識:
代碼如下:
// 任何對象都有原型
obj = {};
console.log( obj.__proto__ );
console.log( Object.getPrototypeOf(obj) );
console.log( obj.__proto__ === Object.getPrototypeOf(obj) );

//對象并沒有語法意義的prototype屬性
alert(obj.prototype) //undefined

//prototype作為一個屬性,僅存在于Function中,代表以這個Function創(chuàng)建的新實例集成的原型,和Function本身的原型無關
var F = function(name){
this.name = name;
}
obj = {a:3,
get b (){
return this.a;
}
};
F.prototype = obj;
newObj = new F('new name');
newObj.name; //作為構造器,name是newObj的自身屬性
newObj.a; //3
//它繼承了obj。可以通過這樣證實:
Object.getPrototypeOf( newObj ) === obj; // true
newObj.__proto__ === obj; //true
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 贵南县| 天峻县| 海城市| 额济纳旗| 临颍县| 德清县| 南开区| 庆元县| 海安县| 庆阳市| 宜兰县| 张家口市| 苏尼特右旗| 新化县| 南昌市| 孟村| 彭山县| 定远县| 泰安市| 平乡县| 屯昌县| 左权县| 吉隆县| 芮城县| 阿拉善右旗| 永福县| 永仁县| 苍梧县| 昌邑市| 韶关市| 繁昌县| 句容市| 滨海县| 武山县| 女性| 衡阳市| 砀山县| 砀山县| 温州市| 大名县| 高尔夫|