1.工场形式
例子:
function createPerson(name,age){
var o = new Object();
o.name = name;
o.age = age;
o.sayName = function () {
alert(this.name);
}
return o;
}
var person1 = createPerson("EvanChen",18,"Software Engineer");//建立一个对象
题目:没有处理对象辨认题目
alert(person1 instanceof createPerson)//fasle 会发明实在并不存在一个createPerson类
2.组织函数形式
例子:
function Person(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
alert(this.name);
}
}
var p1 = new Person('EvanChen',18);//建立一个Person类
用new操作符挪用组织函数阅历了以下4个步骤:
(1)建立一个新对象
(2)将组织函数的作用域赋给新对象
(3)实行组织函数中的代码
(4)返回新对象
处理了工场形式兑现辨认题目:
alert(typeof(p1));// Person
alert(p1 instanceof(Person));// true
3.原型形式
例子:
function Person(){
}
Person.prototype.name = "EvanChen";
Person.prototype.age= 18;
Person.prototype.sayName= function(){
alert(this.name);
}
var p1 = new Person();
p1.sayName(); //"EvanChen"
var p2 = new Person();
p2.sayName(); //"EvanChen"
alert(p1.sayName == p2.sayName); //true
将一切属性和要领都加在Person的prototype属性中,因而新对象具有雷同的属性和要领。
4.组合运用组织函数形式和原型形式(引荐)
例子:
function Person(name,age){
this.name = name;
this.age = age;
this.friends = ["Shelby","Court"];
};
Person.prototype = {
constructor:Person,
sayName:function(){
alert(this,name);
}
}
//Person.prototype.sayName = function(){
// return this.name;
//};
var person1 = new Person("EvanChen",18);
var person2 = new Person("Greg",16);
person1.friends.push("Van");
alert(person1.friends);//"Shelby,Court,Van"
alert(person2.friends);//"Shelby,Court"
alert(person1.friends == person2.friends);//false
alert(person1.sayName == person2.sayName );//true
一切实例同享原型中的属性constructor和要领sayName(),雷同的属性在组织函数中定义。
5.动态原型形式(引荐)
例子:
function Person(name,age){
this.name = name;
this.age = age;
if (typeof this.sayName != "function"){
Person.prototype.sayName = function(){
alert(this.name);
};
}
};
var person1 = new Person("EvanChen",18);
person1.sayName();
在sayName()要领不存在的情况下,才会将它增加到原型中,当原型完成初始化后,可以马上在一切实例中获得同享。
6.寄生组织函数形式
基本思想是:建立一个函数,该函数的作用仅仅是封装对象的代码,然后再返回新构建函数的对象
例子:
function SpecialArray(){
var values = new Array();//建立数组
values.push.apply(values,arguments);//增加值
values.toPipedString = function () {
return this.join("|");
}//增加要领
return values//返回数组
}
var colors = new SpecialArray("red","blue","green");
alert(colors.toPipedString());//red|blue|green
组织函数返回的对象与组织函数外部建立的对象没有什么差别,因而不能依靠instanceof操作符来肯定对象范例。
7.稳妥组织函数形式
稳妥对象指的是没有大众属性,而且其要领也不再援用this的对象。稳妥对象最适合在一些平安的环境中,或许防备数据被其他应用程序删改时运用。
例子:
function Person(name, age) {
//建立要返回的对象
var o = new Object();
//定义私有变量和函数
o.sayName = function (){
alert(name);
}
return o;
}
var person1 = Person("EvanChen", 18);
person1.sayName();//"EvanChen"
在这类形式建立的对象中,除了运用sayName()要领外,没有其他要领接见name的值。