日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

「JavaScript面向对象编程指南」原型

發布時間:2024/4/15 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「JavaScript面向对象编程指南」原型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 JS 中,函數本身也是一個包含了方法(如apply和call)和屬性(如length和constructor)的對象,而prototype也是函數對象的一個屬性
function f(){}
f.constructor //function Function(){[native code]}
可為prototype對象賦予屬性和方法,只有當f作為構造器使用時,這些屬性才會起作用

添加屬性和方法除了在構造函數中,還可通過prototype屬性來增加該構造器所能提供的功能

function Snake(name){this.name = name;this.eat = function(){} } Snake.prototype.color = 'grey'; Snake.prototype.sleep = function(){}

若不想逐一添加,也可定義一個對象,然后將其覆蓋到之前原型上

Snake.prototype = {color:'grey';sleep:function(){} }

在 JS 中,幾乎所有對象都是通過傳引用的方式來傳遞的,因此所創建的每個新對象實體中并沒
有一份屬于自己原型副本。這也就意味著可隨時修改 prototype 屬性,并且由同
一構造器創建的所有對象的 prototype 屬性也都會同時改變(甚至還會影響在修改之前
就已經創建了的那些對象)

訪問某個屬性時,JS引擎會遍歷該對象的所有屬性,找到則立即返回,找不到則會去創建當前對象的構造器函數的原型里找

每個對象都會有一個構造器,而原型本身也是一個對象,這意味著它必然也有一個構造器,而這個構造器又會有自己的
原型。于是這種結構可能會一直不斷地持續下去,并最終取決于原型鏈(prototype chain)的長度,但其最后一環肯定是 Object 內建對象,因為它是最高級的父級對象。

使用hasOwnProperty()方法可判斷某屬性是對象自身屬性還是原型屬性,返回布爾類型,false為原型屬性

對象中不是所有的屬性都會在 for-in 循環中顯示,如(數組的)length 屬性和
constructor 屬性就不會被顯示,那些會顯示的屬性被稱枚舉屬性,可以通過各個對象所提供的 propertyIsEnumerable()方法來判斷對象的某
個屬性是否可枚舉,在 ES5 中,可以具體指定哪些屬性可枚舉,而在 ES3 中沒有這個功能
for-in中原型鏈中的各個原型屬性也會被顯示出來,當然前提是它們是可枚舉的
對于所有的原型屬性,propertyIsEnumerable()都會返回 false,包括那些在 for-in 循環中可枚舉的屬性

function Gadget(name, color) {this.name = name;this.color = color;this.getName = function(){return this.name;}; } Gadget.prototype.price = 100; Gadget.prototype.rating = 3;var newtoy = new Gadget('webcam','black');for(var k in newtoy){if(newtoy.hasOwnProperty(k)){console.log(k + '=' + newtoy[k]); //打印自身的可枚舉屬性} }newtoy.propertyIsEnumerable('name'); //true//而對于內建屬性和方法來說,它們大部分都是不可枚舉的: newtoy.propertyIsEnumerable('constructor'); //false//另外,任何來自原型鏈中的屬性也是不可枚舉的: newtoy.propertyIsEnumerable('price'); //false//但是需要注意的是,如果 propertyIsEnumerable()的調用是來自原型鏈上的某個對象,那么該對象中的屬性是可枚舉的 newtoy.constructor.prototype.propertyIsEnumerable('price'); //true

每個對象都有個isPrototypeOf()方法,用以判斷當前對象是否是另一個對象的原型

var monkey = { name:'Sam' }; function Human(){}; Human.prototype = monkey;var george = new Human();//monkey是george的原型嗎? monkey.isPrototypeOf(george); //true

大多數瀏覽器可得到某個對象的原型,因為大多數瀏覽器都實現了ES5的Object.getPrototypeOf()方法
Object.getPrototypeOf(george) //{ name:'Sam' }

在IE中不存在__proto__,另外__proto__和prototype并不是等價的
**__proto__實際上是某個實例對象的屬性,而prototype則是屬于構造器函數的屬性**

typeof george.__proto__; //"object"typeof george.prototype; //"undefined"typeof george.constructor.prototype; //"object"

所以__proto__只能在學習或調試的環境下使用

轉載于:https://www.cnblogs.com/Grani/p/10655005.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的「JavaScript面向对象编程指南」原型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 不卡中文 | 国产99久| xxx国产| 欧美性视频在线播放 | 哪里可以看毛片 | 亚洲黄色一区二区 | 午夜免费一区 | 亚洲精品无码久久 | 青青在线精品 | 亚洲精品一区二区三区蜜桃久 | 欧美第一页在线观看 | 99久久伊人| 日韩激情一区二区三区 | 涩视频在线观看 | 国产白拍| 91手机在线| 欧美午夜一区二区三区 | 久久婷婷国产麻豆91 | 中国大陆毛片 | 亚洲福利在线播放 | 日韩av网站在线观看 | 午夜色综合 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 亚洲少妇毛片 | 日本中文字幕免费观看 | 91免费观看视频在线 | 黄网站视频在线观看 | 久草热在线 | 另类色综合 | 欧美色视频一区二区三区 | 天天射日日干 | 日韩美在线 | 久久久视频6r | 青青操av在线 | 风流还珠之乱淫h文 | 白白色在线观看 | www.久草.com | 国产一区二区三区福利 | 国产乱码精品一区二区三区五月婷 | 91免费国产在线观看 | 免费成人美女在线观看 | 无码少妇一级AV片在线观看 | 人人爱人人搞 | 日韩 欧美 中文 | 精品国产一二三区 | 偷拍久久久 | 精品九九在线 | 亚欧洲精品 | 亚洲国产精品suv | 日本xxxxxⅹxxxx69| 一区二区三区在线免费观看 | 色99色| 亚洲性生活大片 | 国产人久久人人人人爽 | 国产视频第一页 | 欧美激情小视频 | 日日爽日日操 | 中文字字幕 | 懂色av一区二区 | 日韩视频一区二区三区在线播放免费观看 | 成片免费观看 | 麻豆久久久久 | 美女网站免费黄 | 求欧美精品网址 | 日韩99 | 中国老太婆性做爰 | 日本孰妇毛茸茸xxxx | 国产高清在线精品 | 精产国品一二三区 | 综合网在线观看 | 青青国产在线视频 | 国产乱人伦精品一区二区 | 日韩欧美一区二区三区视频 | 日本人の夫妇交换 | 国产一区精品在线 | 国产成人在线一区 | 黄色特级片 | 精品二区视频 | 国产乱码av| 国产亚洲av片在线观看18女人 | 毛茸茸日本熟妇高潮 | 香蕉视频三级 | 亚洲人成人无码网www国产 | 国产大片一区二区三区 | 国产成人一区在线观看 | 激情小说综合 | av网址在线播放 | 国产精品亚洲成在人线 | 两个女人互添下身爱爱 | 国产在线高潮 | 毛片毛片毛片毛片毛片毛片毛片 | 亚洲aaaa级特黄毛片 | 草莓巧克力香氛动漫的观看方法 | yjizz视频网 国产乱人对白 | 又黄又爽视频在线观看 | 日韩欧美在线免费 | 在线观看午夜视频 | 国产成人精品一区二区三区网站观看 | 一级黄色录像大片 |