原型和原型鏈

2021-08-21 12:58:20 字數 1217 閱讀 3936

如果obj 是 例項物件 

obj.__proto__!=obj.prototype

obj.__proto__==obj的建構函式下的.prototype

建構函式才有 prototype屬性 這是建構函式的原型 通過this設定的屬性和方法屬於例項化後物件的屬性和方法。

建構函式原型下的方法和屬性 f.prototype.a 屬性 f.prototype.a=function(){}方法 是建構函式的

例項化物件 繼承 建構函式的原型 通過原型鏈 所以物件下有__proto__ 指向建構函式的 prototype

f.y=>f.__proto__.y==f.prototype.y==obj.y=>obj.__proto__.y=>object.prototype.y

新增原型物件

let a = object.create();

a 是 {}

等同於

let a = {};

a.prototype.x=2;

function fn2(){};

fn2.prototype.a=10;

let f2=new fn2();

f2.a=1000;

console.log(f2.a);//10

f2.a 不等於 fn2.prototype.a 只是如果f2.a找不到a,就會找到prototype.a

靜態方法 和 物件方法

掛載在建構函式是靜態方法 和 屬性 不需要例項化物件

掛載在建構函式原型上 是物件方法 需要例項化物件後才能使用

function $(){}

$.each=function()

$.prototype.each=function()

$.each()

(new $()).each()

模組化amd->require.js 前置依賴

define('a',['jquery'],function($){})

cmd 後置依賴

define('a',function())

umd 統一定義

(function(root,factory)else if(typeof exports ==='object')else

})(this,function($);

暴露公共方法

return myfunc;

})

原型 和 原型鏈

每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...

原型和原型鏈

原型鏈 例項物件與原型之間的連線,叫做原型鏈 function human human.prototype.age 22 var a new human console.log a.age 這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?這裡例項物件...

原型和原型鏈

建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...