javascript各種方法的原理及原生實現

2021-09-11 09:41:48 字數 1205 閱讀 8050

object.create = function(obj); 

f.prototype = obj;

return new f();

}var newobj = object.create(obj);

原型鏈的關係如下:

newobj._proto_ = f.prototype = obj;

訪問順序:newobj-->newobj._proto_(obj)-->obj.prototype

由此可見,由object.create創造出來的物件,只能訪問原物件的屬性和方法,並不能訪問原型鏈

可以訪問原物件的原型鏈的順序應該為:

newobj-->newobj._proto_(obj)-->obj._proto

obj._proto_才可以訪問到obj的建構函式的prototype原型物件,而obj.prototype不可以

所以如果被建立的原物件為建構函式,也不可以訪問建構函式中的屬性,因為object.create的返回值是new f()建立的,和原物件的構造沒有任何關係

var a = new base();

//new 操作符需要返回乙個能夠訪問建立物件的屬性和方法的物件

a. var obj = new object();   //建立乙個新物件

b. obj._proto_ = base.proptotype;  //新物件的_proto指向base建構函式的原型物件,可以訪問base 的原型鏈

c. base.call(obj);  //base執行call相當於把base建構函式中的this指向了obj,然後呼叫了base函式,將this賦值了一遍

d. return obj; 

//對於空物件obj,b操作使得它可以訪問原型鏈,c操作可以訪問屬性和方法,建立完畢

var obj = ;

var base = function (param1,param2)

base.call(obj,0,0);//輸出為100

//實現call

function.prototype.mycall = function(obj), 100);

}// es5

function foo() , 100);

}

由此可知,箭頭函式裡面根本沒有自己的this,而是引用外層的this。

Object的各種方法

obj.hasownproperty prop 引數 prop 要檢測的屬性字串名稱或者symbol 返回值用來判斷乙個物件是否含有指定的屬性的boolean 所有繼承了object的物件,都會繼承到hasownproperty 方法。這個方法用來檢測乙個物件是否含有特定的自身屬性。和in運算子不同...

ArrayList的各種方法

arraylist。arraylist可以新增任何元素進去。在使用前需要新增命名空間 using system.collections 使用方法 arraylist list new arraylist list.add 表示新增單個元素 list.addrange 表示新增乙個集合元素 list....

Object的各種方法

obj.hasownproperty prop 引數 prop 要檢測的屬性字串名稱或者symbol 返回值用來判斷乙個物件是否含有指定的屬性的boolean 所有繼承了object的物件,都會繼承到hasownproperty 方法。這個方法用來檢測乙個物件是否含有特定的自身屬性。和in運算子不同...