1. 程式人生 > 其它 >js使用函式來建立物件

js使用函式來建立物件

【直接使用函式建立物件】
使用new替換this指標-----例項化

//建構函式
function pet(name,sex,age){
        this.name=name;
        this.sex=sex;
        this.age=age;
        this.play=function(){
            return"玩耍";
        };
        this.eat=function(){
            return"吃飯";
        };
    }
var bella=
new pet(); //使用new替換this指標

函式中的this指向window
這裡用new例項化了pet這個函式,構建出了新的物件,替換this指標

在這裡插入圖片描述
原型鏈_proto_上的構造constructor指向建構函式pet()本身

例項物件的原型鏈=函式的原型物件
console.log(bella.proto == pet.prototype);
原型物件的構造指向本身
console.log(pet.prototype.constructor==pet);

【自定義一個new】

//自定義new
function people(name,sex,age){
    this.name=
name; this.sex=sex; this.age=age; this.study=function(){ return"學習"; }; this.eat=function(){ return"吃飯"; }; } var New=function(xc){ //構建形參xc var obj={}; console.log(obj); obj.__proto__=xc.prototype; // 讓kk的原型鏈等於形參xc的原型物件 xc.prototype.
constructor=xc; console.log(obj); //獲取屬性 var args=Array.prototype.slice.call(arguments,1); //Array陣列中的prototype原型中的slice檢取方法 call替換物件 argumens console.log(args); xc.apply(obj,args); return obj; }; New(people); //將people傳給New var wang=New(people,"jiseng",19,"男"); //傳值 console.log(wang);

先自定義一個函式New 在構建一個形參xc
最後在New(people)將函式people傳進New中實現例項化
其中args是函式的引數列表值,裡面是如下圖將傳進去的屬性值以集合的形式儲存
在這裡插入圖片描述
var args=Array.prototype.slice.call(arguments,1);
陣列Array的方法在他的原型prototype物件上
因此要通過取陣列上的原型物件才能取到clice方法。
(arguments,1)的意思是擷取argument從一開始到完擷取