js中定義物件的幾種形式

2021-07-16 04:36:22 字數 2636 閱讀 7752

js中定義物件的幾種方式

1. 基於已有物件擴充其物件和方法(只適合於臨時的生成乙個物件):

var obj = new object();

obj.name="userobject";

obj.printname = function(name)

obj.printname("newuserobject");

2.工廠方式建立物件(每次建立乙個object後,其中對應的方法(本例中是get)也被建立一次,方法不能被所建立的所有物件(本例中是obj1和obj2)共享):

a.function createobject()

return obj;

}  var obj1 = createobject();

var obj2 = createobject();

obj1.get();

obj2.get();

b.帶引數的構造方法:

function createobject(username,password)

return obj;

}  var obj1 = createobject("zhangsan","123456");

obj1.get();

c.讓函式被多個建立的物件所共享,而不是每乙個物件都建立乙個相同的函式(缺點:物件定義本身和方法分離了):

function get()

function createobject(username,password)

var obj1 = createobject("zhangsan","123456");

var obj2 = createobject("lisi","54321");

obj1.get();

obj2.get();

3.建構函式方式:

a.function person()

}  var person = new person();

person.getinfo();

b.可以在建構函式是傳遞引數:

function person(username,password)

}  var person = new person("zhangsan","123");

person.getinfo();

4.使用原型(prototype)方式建立物件:

優點:建立的多個物件共享同乙個方法(getinfo)

缺點:建立的多個物件在共享同乙個方法的同時也共享了同樣的屬性(username,password),實際開發中這樣兒是

不行的,必須是多個物件都要有自己的屬性。

採用該方式建立物件通常是用來擴充套件已有物件的某乙個方法。

a.function person(){}

person.prototype.username = "zhangsan";

person.prototype.password = "123";

person.prototype.getinfo = function()

var person = new person();

var person2 = new person();

person.username = "lisi";

person.getinfo();

person2.getinfo();

b.如果使用原型方式建立物件,那麼生成的所有物件將會共享原型中的屬性,這樣兒乙個物件改變了該屬性也會反應到其他的物件上:

function person(){}

person.prototype.username = new array(0;

person.prototype.password = "123";

person.prototype.getinfo = function()

var person = new person();

var person2 = new person();

person.username.push("zhangsan");

person.username.push("lisi");

person.password = "456";

person.getinfo();

person2.getinfo();

c.使用原型和建構函式方式來建立物件:

function person()

person.prototype.getinfo = function()

var person = new person();

var person2 = new person();

person.username.push("zhangsan");

person.username.push("lisi");

person.getinfo();

person2.getinfo();

5.動態原型方式:在建構函式中通過標誌量讓所有物件共享乙個方法,而每個物件擁有自己的屬性。

function persion()

person.flag = true;

}  }

var p = new person();

var p2 = new person();

p.getinfo();

p2.getinfo();

JS中定義物件的幾種方式

1.基於已有物件擴充其物件和方法 只適合於臨時的生成乙個物件 2.工廠方式建立物件 每次建立乙個object後,其中對應的方法 本例中是get 也被建立一次,方法不能被所建立的所有物件 本例中是obj1和obj2 共享 a.b.帶引數的構造方法 c.讓函式被多個建立的物件所共享,而不是每乙個物件都建...

js函式的幾種引數形式

es6 預設引數特性允許使用預設值初始化引數。這種比上面介紹的方法更好 更簡潔。an highlighted block function parameter param1,param2 0 parameter 1 1 parameter 1 undefined 1function paramete...

js中定義變數的幾種方式

主要內容是 js中三種定義變數的方式const,var,let的區別。1.const定義的變數不可以修改,而且必須初始化。1 const b 2 正確 2 const b 錯誤,必須初始化 3 console.log 函式外const定義b b 有輸出值 4 b 5 5 console.log 函式...