如果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乙個物件的過程 建立乙...