弄懂js中的原型物件

2021-09-09 09:26:41 字數 2657 閱讀 3040

__proto__     物件的原型物件

prototype      返回函式的原型物件

constructor   返回建立此物件的陣列函式的引用

instanceof     判斷是不是函式的例項

getprototypeof()    返回物件的原型物件

setprototypeof()   設定物件的原型物件

object.create()    建立乙個新物件,傳入的引數作為新建立物件的原型物件;

例子一:

總結:只有函式才有能使用prototype

例子二:

function fn () {};

var fn1 = new fn();

console.log(fn1.__proto__ === fn.prototype);//true

console.log(fn.prototype.constructor === fn);//true

總結:建構函式的例項(fn1)的原型指向建構函式的原型物件(fn.prototype)

例子三:

內建物件

總結: 1.所有的內建函式都是由function()例項化的,包括它自己,即function=new function();

2.萬物皆物件,所有的內建函式都是物件,所有的物件的原型鏈終點都是object.prototype;

例子四:

改變原型物件

function fn () {};

var fn1 = new fn();

var fn2 = new fn();

var fn3 = new fn();

//將fn2的原型物件設定為fn1

fn2 = object.create(fn1);

//將fn3的原型物件設定為fn1

object.setprototypeof(fn3, fn1);

console.log(object.getprototypeof(fn1) === fn.prototype);//true

console.log(object.getprototypeof(fn2) === fn1);//true

console.log(object.getprototypeof(fn3) === fn1);//true

//改變建構函式的原型物件

function fn2 () {};

var obj = {};

//改變fn2的原型物件

fn2.prototype = obj;

var fn4 = new fn2();

console.log(fn4.__proto__ === obj);//true;

總結: 1.改變物件的原型物件可以使用object.setprototypeof。不推薦使用__proto__

2.改變函式的原型物件使用prototype

弄懂js原型鏈 物件建立

第一種方式 字面量 var o1 var o2 newobject 第二種方式 建構函式 varm function name var o3 newm o3 第三種方式 object.create var p var o4 object.create p m.prototype.say functi...

弄懂js原型鏈 物件建立

第一種方式 字面量 var o1 var o2 new object 第二種方式 建構函式 var m function name var o3 new m o3 第三種方式 object.create var p var o4 object.create p m.prototype.say fun...

js中的物件 函式 原型

關於 function object 和protoprototype 1.每乙個物件例項都有乙個proto屬性,這個屬性就是指向 物件建構函式的原型.let b new function console.log b.proto function.prototype true console.log ...