JavaScript的创建自定义类型
程序员文章站
2022-04-04 08:04:58
...
组合使用构造函数模式和原型模式
构造函数模式
自定义类型并且定义类型的属性和方法,就是创建对象。
function Person(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
alert(this.name);
}
}
var person1 = new Person("Tony", 19);
var person2 = new Person("Bob",22);
alert(person1.sayName === person2.sayName)//false。即两个实例的该方法是两个不同的对象,重复定义了一个sayName
定义了一个Person对象,具有两个属性和sayName方法。
但是有一个问题,sayName方法位于构造函数中,每个实例在创建时都会创建一个sayName方法,在JavaScript中,函数就是对象,那么每次就会创建一个对象但是用处是重复的。当一个对象中有多个方法时就会创建很多个重复的实例方法。
原型模式
利用原型模式创建对象,使用原型对象可以让所有对象实例共享它所包含的属性和方法。
function Person(){
}
Person.prototype = {
name : "Tony",
age : 19,
sayName : function(){
alert(this.nama);
}
};
在博文《原型对象的特殊点》提到过,原型对象中不能设置属性为引用类型,否则一个实例的该属性改变,所有实例的该属性都会跟着改变。虽然解决了方法重复定义的问题但是每个实例想要拥有特殊单独的属性就变得麻烦。
组合使用
用原型模式定义共同的方法,用构造函数定义每个实例独有的属性就完美解决了问题。
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype = {
constructor : Person,
sayName : function(){
alert(this.name);
}
}
var person1 = new Person("Bob",22);
var person2 = new Person("Aishi",18);
alert(person1.sayName === person2.sayName);//true。即该方法在两个实例中完全相同
上一篇: JavaScript中的自定义对象
下一篇: JavaScript中的自定义事件
推荐阅读
-
在服务器的mysql中创建自定义函数出错
-
JavaScript对象的创建初学
-
javascript提取URL的搜索字符串中的参数(自定义函数实现)_javascript技巧
-
创建pycharm的自定义python模板方法
-
javascript类型File的Input按钮功能研究_表单特效
-
JS判断浏览器类型与版本的实现代码_javascript技巧
-
JavaScript中使用构造器创建对象无需new的情况
-
JavaScript for in锚点的动态创建_javascript技巧
-
javaScript对象和属性的创建方法_基础知识
-
NewID()创建uniqueidentifier类型的唯一值