摘要:上述每次都需要寫可以優(yōu)化但是此處改變了的屬性,故我們需要顯示的指出構造函數(shù)和原型組合模式二創(chuàng)建空對象前兩種方式創(chuàng)建的對象含有原型,最后一種方式創(chuàng)建的對象無原型,是真正意義上的空對象參考資料
一.創(chuàng)建對象的幾種方式 1. 使用new關鍵字創(chuàng)建
var ob = new Object() ob.name = "name" ob.say = function() {}2.使用字面量的方式創(chuàng)建
var ob = { name: "name", say: function() {} }3.使用工廠模式創(chuàng)建
批量創(chuàng)建對象的方式
function createOb (name){ var ob = new Object() ob.name = name ob.say = function() {} return ob } var ob1 = createOb("zhang") var ob2 = createOb("san")4.構造函數(shù)的方式創(chuàng)建
構造函數(shù)需要大寫
function Parent(name) { this.name = name this.say = function() {} } var child1 = new Parent("child1") var child2 = new Parent("child2")5. 原型方式創(chuàng)建
當我們創(chuàng)建一個函數(shù)時,該函數(shù)就會具備一個prototype屬性,這個屬性指向通過構造函數(shù)創(chuàng)建的那個函數(shù)的原型對象。通俗點講原型對象就是內(nèi)存中為其他對象提供共享屬性和方法的對象。
function Parent2(name) { Parent2.prototype.name = name Parent2.prototype.say = function() {} }
上述每次都需要寫Parent2.prototype,可以優(yōu)化
function Parent3() {} Parent3.prototype = { name: "name" say: function(){} } var ob = new Parent3
但是此處改變了Parent3的constructor 屬性,故我們需要顯示的指出constructor
function Parent4() {} Parent4.prototype = { constructor: Parent4, name: "name", say: function() {} } var ob = new Parent4()6.構造函數(shù)和原型組合模式
function Parent5(name) { this.name = name } Parent5.prototype = { constructor: Parent5, say: function() {} } var ob = new Parent5("zhang")二創(chuàng)建空對象
var ob1 = {} var ob2 = new Object() var ob3 = Object.create(null)
前兩種方式創(chuàng)建的對象含有原型,最后一種方式創(chuàng)建的對象無原型,是真正意義上的空對象參考資料
https://segmentfault.com/a/11...
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106086.html
摘要:可以無數(shù)次地調(diào)用這個函數(shù),而每次它都會返回一個包含三個屬性一個方法的對象構造函數(shù)模式原型模式組合使用構造函數(shù)模式和原型模式創(chuàng)建自定義類型的最常見方式,就是組合使用構造函數(shù)模式與原型模式。 JS中創(chuàng)建對象的主要模式有 工廠模式 工廠模式抽象了具體創(chuàng)建對象的過程例如 function?createPerson(name,?age,?job){ ????var?o?=?new?Object(...
摘要:對象字面量的方式今年創(chuàng)建實例的發(fā)明者我是今年屬性是可以動態(tài)添加,修改的構造函數(shù)無參構造函數(shù)有參構造函數(shù)我叫,今年歲實例化創(chuàng)建對象調(diào)用方法由于指針在對象實例的時候發(fā)生改變指向新的實例。是我的名字混合方式構造函數(shù)原型我是,今年 javascript創(chuàng)建對象簡單的說,無非就是使用內(nèi)置對象或各種自定義對象,當然還可以用JSON;方法很多,也能混合使用。 對象字面量的方式: var pers...
摘要:構造函數(shù)模式定義構造函數(shù)模式是語言創(chuàng)建對象的通用方式。但兩種語言用構造函數(shù)創(chuàng)建對象的方式略有不同在中沒有類的概念,函數(shù)即為一等公民,因此,不必顯式聲明某個類,直接創(chuàng)建構造函數(shù)即可,類的方法和屬性在構造函數(shù)中或原型對象上處理。 工廠模式 定義:工廠模式非常直觀,將創(chuàng)建對象的過程抽象為一個函數(shù),用函數(shù)封裝以特定接口創(chuàng)建對象的細節(jié)。通俗地講,工廠模式就是將創(chuàng)建對象的語句放在一個函數(shù)里,通...
摘要:前言雖然使用構造函數(shù)或者使用對象字面量可以很方便的用來創(chuàng)建一個對象,但這種方式有一個明顯的缺點使用一個接口創(chuàng)建多個對象會產(chǎn)生很多冗余的代碼。即調(diào)用構造函數(shù)所創(chuàng)建的那個對象的原型對象好處是可以讓所有對象的實例共享他的屬性的方法。 前言 雖然使用Object構造函數(shù)或者使用對象字面量可以很方便的用來創(chuàng)建一個對象,但這種方式有一個明顯的缺點:使用一個接口創(chuàng)建多個對象會產(chǎn)生很多冗余的代碼。因此...
摘要:工廠模式不推薦應該把方法放在函數(shù)的外面,避免重復創(chuàng)建該方法定義的不是構建函數(shù),因該使用方法創(chuàng)建實例,而不是方法不要忘記在函數(shù)的最后構造函數(shù)模式不推薦使用指代,函數(shù)無需明確應該把方法放在函數(shù)的外面,避免重復創(chuàng)建該方法原型模式不推薦函數(shù)中不對屬 工廠模式(不推薦) var sayName = function(){ return this.name; }; function cr...
閱讀 1096·2021-10-08 10:04
閱讀 3536·2021-08-05 10:01
閱讀 2292·2019-08-30 11:04
閱讀 1810·2019-08-29 15:29
閱讀 862·2019-08-29 15:12
閱讀 1686·2019-08-26 12:11
閱讀 3129·2019-08-26 11:33
閱讀 1173·2019-08-26 10:23