__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 ...