最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網(wǎng) 責(zé)編:小OO 時間:2020-11-27 20:28:43
文檔

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

第一種創(chuàng)建對象的方式。創(chuàng)建JSON對象;推薦使用的場合: 作為函數(shù)的參數(shù),臨時只用一次的場景。比如設(shè)置函數(shù)原型對象。var object = { name: ";Eric";.age: 24.sayHi: function(){ console.log(";My name is ";+ this.name + ";this year is ";+ this.age + ";years old.";) }};。第二種創(chuàng)建對象的方式。創(chuàng)建一個Object對象。
推薦度:
導(dǎo)讀第一種創(chuàng)建對象的方式。創(chuàng)建JSON對象;推薦使用的場合: 作為函數(shù)的參數(shù),臨時只用一次的場景。比如設(shè)置函數(shù)原型對象。var object = { name: ";Eric";.age: 24.sayHi: function(){ console.log(";My name is ";+ this.name + ";this year is ";+ this.age + ";years old.";) }};。第二種創(chuàng)建對象的方式。創(chuàng)建一個Object對象。

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

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

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

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

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

創(chuàng)建一個Object對象

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

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

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

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)建對象方式解決了前兩種方式的缺點,可以作為對象創(chuàng)建的模板,可以一直復(fù)用創(chuàng)建出多個對象。

new運算符的作用:

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

new運算符原理

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

第三種方式beta1:

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

繼續(xù)升級 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);

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

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

function Person(option) { //用一個對象把所有參數(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ù)升級 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();

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

第一種創(chuàng)建對象的方式。創(chuàng)建JSON對象;推薦使用的場合: 作為函數(shù)的參數(shù),臨時只用一次的場景。比如設(shè)置函數(shù)原型對象。var object = { name: ";Eric";.age: 24.sayHi: function(){ console.log(";My name is ";+ this.name + ";this year is ";+ this.age + ";years old.";) }};。第二種創(chuàng)建對象的方式。創(chuàng)建一個Object對象。
推薦度:
標(biāo)簽: 創(chuàng)建 js 方式
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top