原型和原型鏈

2022-08-05 15:39:14 字數 2109 閱讀 4438

一切皆物件

每個函式都有一個屬性叫做prototype。

這個prototype的屬性值是一個物件(屬性的集合,再次強調!),預設的只有一個叫做constructor(建構函式)的屬性,指向這個函式本身。

object的原型:

通過如下方法可以新增prototype的屬性

function

fn()

fn.prototype.name = '白十三';

fn.prototype.getyear = function

() ;

function

fn()

fn.prototype.name = '白十三';

fn.prototype.getyear = function

() ;

var fn = new

fn();

console.log(fn.name);

console.log(fn.getyear());

fn是一個函式,fn物件是從fn函式new出來的,這樣fn物件就可以呼叫fn.prototype中的屬性。

因為每個物件都有一個隱藏的屬性——“__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...