強大的javascrpt原型链學習

一个自带隐式的 __proto__ 属性[implicit __proto__ property],指向foo的原型

這有點類似實現C# 繼承作用 a類的公共東西,給b和c類共用

var a = {
  x: 10,
  calculate: function (z) {
    return this.x + this.y + z
  }
};

var b = {
  y: 20,
  __proto__: a
};

var c = {
  y: 30,
  __proto__: a
};

// 调用继承过来的方法
alert(b.calculate(30)); // 60
alert(c.calculate(40)); // 80

原理:如果在对象b中找不到calculate方法(也就是对象b中没有这个calculate属性), 那么就会沿着原型链开始找。如果这个calculate方法在b的prototype中没有找到,那么就会沿着原型链找到a的prototype,一直遍历完整个原型链。记住,一旦找到,就返回第一个找到的属性或者方法。因此,第一个找到的属性成为继承属性。如果遍历完整个原型链,仍然没有找到,那么就会返回undefined。

时间: 2024-10-14 18:57:50

強大的javascrpt原型链學習的相关文章

邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功

修練過中國武術的人都知道,任何一種拳法的學習最重要的就是基礎功,而基礎功又可分為內在與外在的修練,內在的修練強調在平心.靜氣.不爭的調息.至於外在這首重在站樁.鬆沉.不疾不徐的應對能力.有了深厚基礎的奠定,才能訓練出真正的武林高手.同樣的在IT技能專業的學習之路上,我們經常得在一兩年之內,就必須吸收一項全新的技術與應用,如何對於一門全新的技術並快速上手,以及擁有從故障排除到系統效調的能力,這些都得仰賴您相關的基礎功是否修練完善. 筆者曾經看過一些從事IT技術服務工作的朋友,對於「技術」這門課的學

对原型链的理解 语言表达能力不好 直接用代码,哈

分享一下 我对原型和原型链的理解 原型对象: function People(nameValue,ageValue,fondValue)            {                this.name = nameValue;                this.age = ageValue;                this.fond = fondValue;            } People.prototype.rule = function()         

大二上學期學習生活總結

暑假的時候沒有回家,一直呆在學校學習.雖然沒能在外打工賺錢,不過卻學到了不少知識.對自己未來的付出.比賺生活費更有意義. 大一一年的學習之後,我對自身存在的不足有了進一步認識,也开始了新一波的奮鬥! [專業課] 這個學期幾乎全是專業課,包含C#.網頁設計. 操作系統.Linux.數據庫和計算機網絡. [計算機網絡]之前學過,後來期末考試的時候,感覺又忘得几乎相同了,雖然沒掛科,不過卻應該驚醒,閑了再翻翻看看. [C#]也是之前學過,在學期末的課程設計中使用SQLserver數據庫做了一個學生管理

大一下學期學習生活總結

時間總是會以超乎尋常的速度掠過,帶走了青春的夢想和騷動,留下各種美好的回憶與令人扼腕歎息的遺憾.不知不覺中,我的大學,就這樣度過了整整一年.這一年來,我不斷地總結著自己的學習.生活歷程,以期能有更好的發展與進步. 現在,就總結下自己的課程學習.自主學習(專業與非專業),最後,是對日常生活中點滴的回味. 上個學期,雖然課比較多,但真正重要的,不過是數據結構與Java.其它的,像PS--之前學過,雖然學的不好,應試,简单的图片处理还是可以的:計算機電路--硬件的東西,最后也没怎么学:英語--課下在準

linux學習決心書

在大學的前三年,我都不知道要花很多時間選擇一個領域去專精它.感覺好像什麼都只會一點,也說不出什麼皮毛.剛好在大學三年級的生日,我決定將平時存的所有前砸下去買老男孩老師的課程,為的是在我大學畢業前,我希望我可以讓我自己在linux領域的能力,並在大學畢業後能夠順利進入研究所就讀.或是在廈門找到好的offer,讓之前瞧不起我的人能夠傻眼,成為一位牛逼的人.為了達到這個目標 ,我必須: 每天最少要念7小時的Linux.學校沒上課時最少要念10小時 必須捨棄平時的娛樂的時間,達到每天不熬夜. 在上課時間

大一上學期學習生活情況總結

在本學期各科都已結課的某個夜裏,我開始寫我的這份總結.說實話,我真的很喜歡夜的這種安靜--靜能生慧. 我是高二下學期開始與計算機結緣,好吧,接觸的比較晚啦.但這並不妨礙我對它的興趣.從基礎的開始,到Word.Excel之類的,然後是PS.Flash,最後是VB.C. 在高考結束時,我用VB做了一些小玩具,學完了譚浩強那本C語言的教材,當然,還有裏面的例題.我的編程路,應該是從這個時候正式開始的吧! 報了計算機專業,沒有服從調劑.終於,我來到了大學,開始我的大學生活.這個學期,我學了很多知識,也經

MDN——javascript——入门——第三章对象——对象.构造函数.原型链.继承——知识点总结

对象Object 由属性property(变量).方法method(函数)组成 var objectName = { member1Name : member1Value, member2Name : member2Value, member3Name : member3Value } member(成员)的值是任意的, 一个如上所示的对象被称之为对象的字面量(literal)——手动的写出对象的内容来创建一个对象.不同于从类实例化一个对象,我们会在后面学习这种方式. 访问对象成员 1.点表示法

機器學習的看法

看了官方的機器學習的介紹文檔,感覺機器學習的發展方向還是有很大的空間的.雖然說現在的方向很好,但是,這不是唯一的途徑. 生命科學的發展還在繼續,硬件產業的技術還在突破提升,雖然速度慢了,但是我相信,那些存在于實驗室里的東西,仍不是這個時代所能接受的. 如果到了未來的某一天,機器學習和人工智能真的發展到了一定的境界,那麽,機器終究會有超越人類的一天. 科學是無限制的,這也是人的欲望的表現. 現在的人類和機器的耦合度越來越高了,未來的某一天(現在也有表現),如果人類發展到終究是得依靠機器才能生存的話

JavaScript 变量、函数与原型链

定义 || 赋值 1-函数的定义 函数定义的两种方式: “定义式”函数:function fn(){ alert("哟,哟!"); } “赋值式”函数:var fn = function(){ alert("切可闹!"); } @页面加载时,浏览器会对JavaScript代码进行扫描,并将 定义式函数进行预处理(类似C等的编译).[函数声明提升] 处理完再由上至下执行,遇到赋值式函数 则只是将函数赋值给一个变量,不进行预处理,待调用时才进行处理. @在定义前面调用函