這個方法很強大,也能完成一些JS內的繼承。探索ing.......
var q; var p = {x:1,y:2}; q = Object.create(p); // 調用方法,返回新對象 q.x = "x"; // q的自有屬性x console.log(q.x+" | "+q.__proto__.x); // x | 1 q.x,q.y不是q對象的自有屬性 p = {x:"px"}; console.log(q.x+" | "+q.__proto__.x); // x | 1 重新改變p對象,不收影響 q = Object.create(p); console.log(q.x+" | "+q.__proto__.x); // px | px 調用方法之后,對象改變 q.__proto__.test = "test"; console.log(p.test); // test 看來方法是返回一個新對象引用,這個引用是指向p對象的 // var a = Object.create(b); a,b均為對象,則a._proto_指向b引用的對象,互相可以讀寫 console.log(q.__proto__===p); // true // 讓我們還原一下 p = {x:1,y:2}; q = Object.create(p); // 這兩個對象像是互相引用的關系,就像下面這樣 var a = {a1:"a1"}; var b = {b1:"b1",b2:a}; a.a2 = b; console.log(a.a2.b1); // b1 console.log(b.b2.a1); // a1 // 有同學會問為什么不能這樣? var x = {x1:"x1",x2:y}; var y = {y1:"y1",y2:x}; console.log(x.x2.y1); // "Uncaught TypeError: Cannot read property "y1" of undefined" // 哦別忘了,JS是從上到下執行的,你在x2賦值y的引用時,y對象還沒沒創建呢
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83284.html
摘要:要用作原型的對象。函數對象可以創建普通對象,這個我們上面講過了回顧一下這是一個自定義構造函數普通對象沒法創建函數對象,凡是通過創建的對象都是函數對象,其他都是普通對象通常通過創建,可以通過來判斷。 關于js的原型和原型鏈,有人覺得這是很頭疼的一塊知識點,其實不然,它很基礎,不信,往下看要了解原型和原型鏈,我們得先從對象說起 創建對象 創建對象的三種方式: 對象直接量 通過對象直接量創建...
摘要:這個屬性本身又是一個類型的對象,原型對象都包含一個指向構造函數的指針,而每一個實例也都包含一個指向原型對象內部的指針。 前陣子忙于準備CET-6,沒時間更新文章,之后大概一個月將忙于準備期末考,也應該不會更新了,今天趁周末有時間再更新一篇最近研究的一些東西吧。 callee和caller function inner(){ console.log(arguments.calle...
摘要:關于中面向對象的理解面向對象編程它是一種編程思想我們的編程或者學習其實是按照類實例來完成的學習類的繼承封裝多態封裝把實現一個功能的代碼封裝到一個函數中一個類中以后再想實現這個功能,只需要執行這個函數方法即可,不需要再重復的編寫代碼。 關于js中面向對象的理解 面向對象編程(oop) 它是一種編程思想 (object-oriented programming ), 我們的編程或者學習其...
摘要:關于中面向對象的理解面向對象編程它是一種編程思想我們的編程或者學習其實是按照類實例來完成的學習類的繼承封裝多態封裝把實現一個功能的代碼封裝到一個函數中一個類中以后再想實現這個功能,只需要執行這個函數方法即可,不需要再重復的編寫代碼。 關于js中面向對象的理解 面向對象編程(oop) 它是一種編程思想 (object-oriented programming ), 我們的編程或者學習其...
閱讀 1006·2019-08-30 15:55
閱讀 3446·2019-08-30 13:10
閱讀 1274·2019-08-29 18:45
閱讀 2352·2019-08-29 16:25
閱讀 2113·2019-08-29 15:13
閱讀 2427·2019-08-29 11:29
閱讀 559·2019-08-26 17:34
閱讀 1490·2019-08-26 13:57