js創建對象的幾種方式
阿新 • • 發佈:2017-09-24
object類 true object 編寫 clas scrip type size fun
1.通過new Object創建對象
作用範圍:
用於屬性名字和屬性值不能確定的地方
優點:
編寫方便
缺點:
1.需要寫大量代碼
2.創建出來的對象都是Object對象
var obj = new Object(); obj.name = "張三" obj.age = 12; obj.setName=function (name) { this.name=name; } log(obj.name, obj.age);
2.使用{}創建對象
適用場景:
適用於確定對象,確定方法,不需要創建很多個對象優點:
書寫方便
缺點:
1.不利於擴展性
2.每次創建對象還需要有很多重復性的工作
3.浪費內存
var obj = { name: "張三", age: 12, setName: function (name) { this.name = name; } } log(obj.name,obj.age)
3.使用工廠方法創建對象
適用場景:
用於有固定的屬性的對象進行創建,不用在意其創建的對象是不是Object類型還是自定義類型
優點:創建速度快,代碼便捷
缺點:
浪費內存
所有實例都是Object的實例對象
function createPerson(name, age) { return { name: name, age: age, setName: function (name) { this.name = name; } } } var p=createPerson("張三",12); log(p.name,p.age);
4.使用函數創建對象
適用範圍:
用於創建多個對象,並且有自己的實例對象屬性
優點:
不是一直都是Object對象,可以是自己創建的對象
缺點:
1.浪費內存,特別是公用方法
function Person(name,age) { this.name=name; this.age=age; this.setName=function (name) { this.name=name; } } var p=new Person("張三",11); log(p.name,p.age)
5.原型鏈和函數進行創建對象
適用場景:
用於對於有公共方法的對象
優點:
優化內存,將方法放在了prototype中
缺點:
未涉及字段
function Person(name,age) { this.name=name; this.age=age; } Person.prototype.setName=function (name) { this.name=name; } var p=new Person("小米",12); log(p); log(p instanceof Person)
js創建對象的幾種方式