//原型鏈
// 原型鏈
// 物件的__proto__它的是原型,而原型也是乙個物件,也有__proto__屬性,原型的__proto__又是原型的原型,就這樣可以一直通過__proto__想上找,這就是原型鏈,當向上找找到object的原型的時候,這條原型鏈就算到頭了
var m=function(name); //prototype也是指向原型物件
//原型物件的construor指向的也是建構函式
var o3=new m("o3"); //例項_protpo_指向原型物件
// console.log(o3);
//o3.__proto__===m.prototype //true 物件和函式指向相同
//true 原型物件的construor指向建構函式
var o5=new m();
o3.__proto__.say=function()
// o3.say(); //hello world
// o5.say(); //hello world
// instanceof用於判斷例項物件的_protp_和生成該例項的建構函式的prototype是不是同乙個位址
//o3 instanceof m //true
//o3 instanceof object //true
//判斷例項是由那個建構函式生成的
//o3.__proto__.constructor===m; //true
//o3.__proto__.constructor===object; //true
//繼承
//js繼承
//如果需要繼承 那麼就需要乙個父類
function animal(name)
} //構造繼承
animal.prototype.eat=function(food)
// 構造繼承 複製父類的例項屬性給子類(沒用到原型)
function cat(name)
var cat = new cat();
console.log(cat.name); //tom
"fish")); //報錯 因為沒有在父元素中
console.log(cat.sleep()); //tom正在睡覺
//組合繼承呼叫父類構造,整合父類元素並且保留引數,將父類例項作為子類原型,實現函式復用
function pig(name)
pig.prototype = new animal(); //獲取父類繼承
//test code
var pig = new pig();
console.log(pig.name);
console.log(pig.sleep());
//寄生組合繼承 不會初始化兩次例項
function dog(name)
(function();
super.prototype = animal.prototype;
dog.prototype = new super();
})();
var dog=new dog();
console.log(dog.name);
console.log(dog.sleep());
//oop
// oop 思想 還是不咋的 學typescript再深入點吧
var person = function ()
} var joan=new person();
joan.run();
console.log(joan.__proto__===person.prototype); //true
var niki = new person();
person.prototype.run=function()
joan.run(); //runing
niki.run(); //runing
原型 原型鏈 繼承
原型 是function物件的乙個屬性,它定義了建構函式 製造出的物件 的公共祖先。通過該建構函式產生的物件,可以繼承該原型的屬性和方法。原型也是物件 這定義有點模糊,用 解釋一下 我們在控制台中列印出了這個,首先son物件的建構函式是foo,但是我們的foo中什麼屬性都沒有,怎麼會出現乙個 pro...
原型 原型鏈 繼承
在 js 中,一切皆物件!下面就讓我們從建立物件開始,逐步學習js中的核心知識 原型,原型鏈,繼承等 1.字面量方式建立物件 var obj var obj1 2.使用 new object 的方式建立物件 var obj2 new object obj2.name 張三 obj2.age 13 o...
原型鏈繼承
一 例項化物件 給物件增加屬性和方法 function person name,age person.prototype.sayhi function 任何乙個建構函式都有乙個屬性 prototype 原型 這個原型是乙個物件,這個物件中所有的屬性和方法都可以可以被建構函式建立的例項訪問。二 建構函...