成熟丰满熟妇高潮XXXXX,人妻无码AV中文系列久久兔费 ,国产精品一国产精品,国精品午夜福利视频不卡麻豆

您好,歡迎來(lái)到九壹網(wǎng)。
搜索
您的當(dāng)前位置:首頁(yè)javascript創(chuàng)建對(duì)象的3種方法

javascript創(chuàng)建對(duì)象的3種方法

來(lái)源:九壹網(wǎng)

本文為大家分享了js創(chuàng)建對(duì)象的多種方法,分享個(gè)方法的優(yōu)劣,具體內(nèi)容如下

第一種創(chuàng)建對(duì)象的方式:

創(chuàng)建JSON對(duì)象
推薦使用的場(chǎng)合: 作為函數(shù)的參數(shù),臨時(shí)只用一次的場(chǎng)景。比如設(shè)置函數(shù)原型對(duì)象。

var object = {
 name: "Eric",
 age: 24,
 sayHi: function(){
 console.log("My name is "+ this.name + " this year is " + this.age + "years old.")
 }
};

第二種創(chuàng)建對(duì)象的方式:

創(chuàng)建一個(gè)Object對(duì)象

var object = new Object();
object.name = "Eric";
object.age = 24;
object.sayHi = function(){....};

以上兩種創(chuàng)建對(duì)象方式的缺點(diǎn):不能作為對(duì)象創(chuàng)建的模板,也就是不能用new進(jìn)行構(gòu)造新對(duì)象。

第三種創(chuàng)建對(duì)象的方式:

function Person() {
 this.name = "Eric";
 this.age = 24;
 this.sayHi = function(){
 console.log(this.name);
 }
}
 
var object1 = new Person();
var object2 = new Person();

這種創(chuàng)建對(duì)象方式解決了前兩種方式的缺點(diǎn),可以作為對(duì)象創(chuàng)建的模板,可以一直復(fù)用創(chuàng)建出多個(gè)對(duì)象。

new運(yùn)算符的作用:

執(zhí)行構(gòu)造函數(shù)(new后面的那個(gè)函數(shù)),在構(gòu)造函數(shù)內(nèi)部創(chuàng)建一個(gè)空對(duì)象
把上一部創(chuàng)建的空對(duì)象跟構(gòu)造函數(shù)的原型對(duì)象進(jìn)行關(guān)聯(lián)
然后把this指向當(dāng)前空對(duì)象
在構(gòu)造函數(shù)執(zhí)行結(jié)束后,如果沒(méi)有return,把空對(duì)象返回給object

new運(yùn)算符原理

第三種方式有個(gè)缺點(diǎn): 對(duì)象的內(nèi)部的函數(shù)會(huì)在每個(gè)對(duì)象中都存一份如果創(chuàng)建的對(duì)象非常多的話,那么非常浪費(fèi)內(nèi)存。函數(shù)的行為是所有對(duì)象可以共有,不需要每個(gè)對(duì)象都保存一份。所以,可以把函數(shù)放到原型中進(jìn)行聲明,那么所有對(duì)象都有了公共的函數(shù),而且內(nèi)存中只保留一份。所有的屬性寫(xiě)到對(duì)象的內(nèi)部

第三種方式beta1:

function Person() {
 this.name = 'Eric';
 this.age = 24;
}
Person.prototype = {
 sayHi: function() {
 },
};
 
var object1 = new Person();
var object2 = new Person();

繼續(xù)升級(jí) beta2 :

function Person(name,age) {
 this.name = name || "";
 this.age = age || "";
}
Person.prototype = {
 sayHi: function() {
 },
};
 
var object1 = new Person(name1,age1);
var object2 = new Person(name2,age2);

問(wèn)題:1、調(diào)用者如果傳遞參數(shù)的順序發(fā)生變化,那么廢了
問(wèn)題:2、參數(shù)增減都會(huì)導(dǎo)致函數(shù)聲明變化,調(diào)用的地方也可能發(fā)生變化。

如何解決:繼續(xù)升級(jí) beta3 :

function Person(option) { //用一個(gè)對(duì)象把所有參數(shù)覆蓋
 this.name = option.name || "";
 this.age = option.age || "";
}
Person.prototype = {
 sayHi: function() {
 },
};
 
var object1 = new Person({
 name: "Eric",
 age: 24
 });
var object2 = new Person({
 name: "XXX",
 age: xx
 });

繼續(xù)優(yōu)化,把初始化的代碼 放到init函數(shù)中

繼續(xù)升級(jí) beta4 :

function Person(option) {
 this._init(option);
}
Person.prototype = {
 _init: function (option){
 this.name = option.name;
 this.age = option.age;
 },
 sayHi: function(){
 console.log("HI");
 }
};
 
var object1 = new Person({
 name: "Eric";
 age: 24
 });
object1.sayHi();

Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號(hào)-2

違法及侵權(quán)請(qǐng)聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市萬(wàn)商天勤律師事務(wù)所王興未律師提供法律服務(wù)