概述
面向對象的語言有一個標誌,那就是他們都有類的概念,而通過類可以創建任意多個具有相同屬性和方法的對象。
對象的創建
1、工廠模式
//工廠模式 function getPerson(name,age){ //定義age不能直接訪問 var person = { name:name, _age:age, getName:function(){ return this.name; } }; Object.defineProperties(person,{ _age:{ value:age }, age:{ get:function(){ return this._age; }, set:function(age){ this._age = age; } } }); return person; } var p2 = getPerson("person2",12); console.log(p2.getName());
2、構造函數模式
//構造函數模式 function Person(name,age){ this.name = name; this.age = age; this.getName = getName; } var p1 = new Person("person1",12); console.log(p1.getName());
3、原型模式
//原型模式 function People(){}; People.prototype = { name:"", age:0, getName:getName } var p3 = new People(); p3.age = 12; p3.name="person3"; console.log(p3.getName()); console.log("sex" in p3);
4、構造函數+原型
//*構造函數+原型模式*// function Student(name,age){ this.name = name; this.age = age; } Student.prototype ={ constructor:Student, getName:getName } var stu = new Student("student",18); console.log(stu.getName());