一切皆物件
每個函式都有一個屬性叫做prototype。
這個prototype的屬性值是一個物件(屬性的集合,再次強調!),預設的只有一個叫做constructor(建構函式)的屬性,指向這個函式本身。
object的原型:
通過如下方法可以新增prototype的屬性
functionfn()
fn.prototype.name = '白十三';
fn.prototype.getyear = function
() ;
functionfn是一個函式,fn物件是從fn函式new出來的,這樣fn物件就可以呼叫fn.prototype中的屬性。fn()
fn.prototype.name = '白十三';
fn.prototype.getyear = function
() ;
var fn = new
fn();
console.log(fn.name);
console.log(fn.getyear());
因為每個物件都有一個隱藏的屬性——“__proto__”,這個屬性引用了建立這個物件的函式的prototype。即:fn.__proto__ === fn.prototype
每個物件都有一個__proto__,可成為隱式原型。
每個物件都有一個__proto__屬性,指向建立該物件的函式的prototype。
是object.prototype確實一個特例——它的__proto__指向的是null,切記切記!
一個物件要麼是類似於 new fn()出來的要麼是new object()建立出來的,所以物件的_proto_都會指向 fn.prototype或者object.prototype。
自定義函式的prototype本質上也是物件,就是和 var obj = {} 是一樣的,都是被object建立,所以它的__proto__指向的就是object.prototype。
函式也是一種物件,函式當然也有__proto__
函式也不是從石頭縫裡蹦出來的,函式也是被建立出來的。誰建立了函式呢?——function——注意這個大寫的“f”。
以上**中,第一種方式是比較傳統的函式建立方式,第二種是用new functoin建立。
首先根本不推薦用第二種方式。
這裡只是向大家演示,函式是被function建立的
function也是一個函式,函式是一種物件,也有__proto__屬性。既然是函式,那麼它一定是被function建立。所以——function是被自身建立的。所以它的__proto__指向了自身的prototype。
總結:每個函式都有一個屬性叫做prototype。
物件是被函式建立的,物件都有__proto__屬性,指向建立了該物件的函式的prototype。
函式一定是被function建立的,函式也是物件,物件都有__proto__屬性,函式的__proto__屬性,指向function的prototype。
prototype也是物件,都是被object建立,所以它的__proto__指向的就是object.prototype。
object.prototype的_proto_指向null
function是被自身建立的,所以它的__proto__指向了自身的prototype。
原型和原型鏈
物件實現方法的幾種方式 1 當前建構函式構造出的例項可用 2 當前例項可用 3 當前建構函式構造出的例項可用 4 所有例項可用 5 所有例項可用 記 1 只有函式才有 prototype 屬性,該屬性是一個物件 2 所有例項的 proto 都指向建構函式的 prototype 屬性 3 object...
原型和原型鏈
建構函式 大寫字母開頭 var a var a new object var a var a new array function foo var foo new function 使用instanceof判斷一個函式是不是一個變數的建構函式 f instanceof foo f instanceo...
原型和原型鏈
js 是一個基於原型繼承的語言 class student say 我今年 歲 我的學號是 let liming new student 李明 18 0001 通過類 new 物件 例項 console log liming name 李明console log liming age 18limin...