最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS創(chuàng)建自定義對象的六種方法總結(jié)

 更新時間:2020年12月15日 15:33:54   作者:極致同學(xué)  
這篇文章主要給大家介紹了關(guān)于JS創(chuàng)建自定義對象的六種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、創(chuàng)建一個 Object 實例

var person = new Object();
person.name = "rose";
person.age = 18;
person.job = "actor";
person.sayName = function () {
 console.log(this.name);
};
console.log(person); 

2、對象字面量

var person = {
 name: "rose",
 age: 18,
 job: "actor",
 sayName: function () {
 console.log(this.name);
 },
};
console.log(person);

上面兩種方式是創(chuàng)建對象的兩種基本方式,他們的原型就是 Object

3、工廠模式

function createPerson(name,age,actor){
 var person = new Object();
 person.name = "rose";
 person.age = 18;
 person.job = "actor";
 person.sayName = function () {
  console.log(this.name);
 };
 return person
}
console.log(p1 instanceof Object);//true
console.log(p1 instanceof createPerson);//false

從上面代碼中我們可以看出來,工廠模式實際上就是借助函數(shù),內(nèi)部返回使用第一種方式( new Object())創(chuàng)建的對象。

優(yōu)點:可以很方便的創(chuàng)建相似對象。

缺點:沒有解決對象識別的問題,即怎樣知道一個對象的類型。

4、構(gòu)造函數(shù)方式

function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayName = function () {
 console.log(this.name);
 };
}
var p = new person("rose", 18, "actor");
console.log(p instanceof Person);//true
console.log(p instanceof Object);//true

構(gòu)造函數(shù)可以創(chuàng)建特定類型的對象,像 Object , Array 這樣的原生構(gòu)造函數(shù),在運行時會自動出現(xiàn)在執(zhí)行環(huán)境中。

構(gòu)造函數(shù)模式與工廠模式的不同之處為:

  1. 沒有顯式得創(chuàng)建對象,
  2. 直接將屬性和方法賦值給了this對象
  3. 沒有return語句

構(gòu)造函數(shù)方式創(chuàng)建對象必須使用 new ,操作符,會經(jīng)歷下面四個步驟

  1. 創(chuàng)建一個對象
  2. this指向這個新創(chuàng)建的對象
  3. 執(zhí)行代碼
  4. 返回這個對象

構(gòu)造函數(shù)方式的優(yōu)點:以構(gòu)造函數(shù)創(chuàng)建的對象,在其原型上都會有一個 constructor 屬性,這個屬性指向構(gòu)造函數(shù) Person 而這個屬性最初是用來標(biāo)識數(shù)據(jù)類型的。

憂化

function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayName = sayName;
}
function sayName(){
 console.log(this.name);
}
var p = new person("rose", 18, "actor");

缺點:當(dāng)對象需要很多方法的時候,就會定義多個全局作用域下的函數(shù),這樣一來,不僅毫無封裝性可言,而且讓全局作用域下的函數(shù)過多。

5、原型模式

function Person() {}
Person.prototype.name = "rose";
Person.prototype.age = 18;
Person.prototype.sayName = function () {
 console.log(this.name);
};
var p = new Person();
console.log(p);
 

說到原型對象就要說一下原型鏈,原型與原型鏈對象如下圖所示:

我們可以看到,在prototype上面定義的所有屬性都是在其原型對象上。在原型對象上的屬性與方法屬于公有屬性和公有方法。其所有實例都可以訪問到。

6、**組合使用構(gòu)造函數(shù)模式和原型模式 ** 最常用

function Person(name, age) {
 this.name = name;
 this.age = age;
}
Person.prototype.sayName = function () {
 console.log(this.name);
};
var p = new Person("rose", 18);
console.log(p);

對象在引用其屬性的時候,會按照原型鏈去查找,直到查找到Object的原型。

總結(jié)

到此這篇關(guān)于JS創(chuàng)建自定義對象的六種方法的文章就介紹到這了,更多相關(guān)JS創(chuàng)建自定義對象方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS實現(xiàn)兩周內(nèi)自動登錄功能

    JS實現(xiàn)兩周內(nèi)自動登錄功能

    這篇文章主要為大家詳細介紹了JS實現(xiàn)兩周內(nèi)自動登錄功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • layui使用技巧和常見問題匯總

    layui使用技巧和常見問題匯總

    layui技巧:下拉框未展示問題;下拉框的onchange事件處理;關(guān)閉彈出層,重新加載父頁面;父頁面如何傳遞參數(shù)給彈出層的iframe頁面;表單元素處于禁用狀態(tài);表單提交如何獲取表單元素值集合;數(shù)據(jù)表格固定列;帶搜索的下拉框;表單提交阻止頁面跳轉(zhuǎn);父頁面和子窗口傳遞值
    2024-07-07
  • javascript自定義滾動條實現(xiàn)代碼

    javascript自定義滾動條實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了javascript自定義滾動條實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JS面向?qū)ο缶幊袒A(chǔ)篇(三) 繼承操作實例詳解

    JS面向?qū)ο缶幊袒A(chǔ)篇(三) 繼承操作實例詳解

    這篇文章主要介紹了JS面向?qū)ο缶幊汤^承操作,結(jié)合實例形式詳細分析了JS面向?qū)ο罄^承的具體概念、原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • 簡單了解微信小程序的目錄結(jié)構(gòu)

    簡單了解微信小程序的目錄結(jié)構(gòu)

    這篇文章主要介紹了簡單了解小程序的目錄結(jié)構(gòu),在開發(fā)小程序之前,我們首先需要對其目錄結(jié)構(gòu)進行了解,以便于提升開發(fā)效率,需要的朋友可以參考下
    2019-07-07
  • js保留兩位小數(shù)方法總結(jié)

    js保留兩位小數(shù)方法總結(jié)

    本篇文章給大家總結(jié)了js保留兩位小數(shù)的各種方法以及每種方法的實例代碼分析,如果大家對此有需要,一起來學(xué)習(xí)下js保留兩位小數(shù)的方法吧。
    2018-01-01
  • DIV層之拖動、關(guān)閉、打開效果代碼

    DIV層之拖動、關(guān)閉、打開效果代碼

    非常不錯的效果,適合在當(dāng)前頁打開測試窗口,圖片等
    2008-09-09
  • JavaScript截斷字符串的方法

    JavaScript截斷字符串的方法

    這篇文章主要介紹了JavaScript截斷字符串的方法,涉及javascript字符串截取的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 淺析JavaScript中的同名標(biāo)識符優(yōu)先級

    淺析JavaScript中的同名標(biāo)識符優(yōu)先級

    這篇文章主要介紹了JavaScript中的同名標(biāo)識符優(yōu)先級。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • JavaScript中的Function函數(shù)

    JavaScript中的Function函數(shù)

    函數(shù)是由事件驅(qū)動的或者當(dāng)它被調(diào)用時執(zhí)行的可重復(fù)使用的代碼塊,接下來跟著小編一起來學(xué)習(xí)javascript中的function函數(shù),小伙伴們快來一起學(xué)習(xí)吧
    2015-08-08

最新評論

梅河口市| 新巴尔虎左旗| 天峨县| 屯门区| 怀安县| 盘山县| 乌拉特中旗| 鹤峰县| 丰台区| 芷江| 罗平县| 左贡县| 上思县| 吉水县| 平阳县| 准格尔旗| 武威市| 绿春县| 白玉县| 安远县| 奇台县| 鄢陵县| 昌吉市| 福鼎市| 吴堡县| 南召县| 嘉义县| 常熟市| 惠州市| 克什克腾旗| 富宁县| 曲阳县| 普陀区| 寻乌县| 南澳县| 都匀市| 永靖县| 盱眙县| 吉首市| 湖南省| 潼关县|