首页 / JAVASCRIPT / 如何创建对象
如何创建对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何创建对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2636字,纯文字阅读大概需要4分钟。
内容图文
1.使用Object创建对象
var person = new Object(); person.name = "Nicholas"; person.age = "29"; person.job = "Software Engineer"; person.sayName = function(){ alert(this.name); }; //对象字面量写法 var person = { name: "Nicholas", age: "29", job: "Software Engineer", sayName: function(){ alert(this.name); } };
缺点:使用同一个接口创建很对对象,会产生大量的重复代码。
2.工厂模式
function createPerson (name, age , job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o; } var person1 = createPerson("Nicholas", "29", "Software Engineer"); var person2 = createPerson("Greg", "27", "Doctor");
缺点:无法识别对象的类型。
3.构造函数模式
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; } //构造函数使用new操作符来调用 var person1 = new Person("Nicholas", "29", "Software Engineer"); var person2 = new Person("Greg", "27", "Doctor");
缺点:每个方法都要在实例上重新创建一遍
//不同实例上的同名函数是不相等的 alert(person1.sayName == person2.sayName); //false //可以把函数定义转移到构造函数外来解决这个问题 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = sayName; } function sayName() { alert(this.name); }
4.原型模式
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。
function Person() { } Person.prototype.name = "Nicholas"; Person.prototype.age = "29"; Person.prototype.job = "Software Engineer"; Person.prptptype.sayName = function(){ alert(this.name); }; var person1 = new Person(); person1.sayName(); //"Nicholas" var person2 = new Person(); person2.sayName(); //"Nicholas" alert(person1.sayName == person2.sayName); //true
//更简单的原型语法 function Person() { } Person.prototype = { constructor : Person, //以对象字面量形式创建新对象,constructor不再指向Person,在此特意设置为Person name : "Nicholas", age : "29", job : "Software Engineer", sayName : function () { alert(this.name); } };
原型和实例通过prototype和constructor属性相互关联
代码读取某个对象的属性时,是先检索实例,在检索实例的原型,所以实例的属性会覆盖原型的属。
重新原型对象会切断原型与实例的联系,而修改原型对象不会。
缺点:实例无法拥有自己的属性
5.组合使用构造函数模式和原型模型
//构造函数模式用于定义实例属性 function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.friend = ["Shelby", "Court"]; } //原型模式用于定义方法和共享属性 Person.prototype = { constructor : Person; sayName : function() { alert(this.name); } }
6.动态原型模式,寄生构造函数模式,稳妥构造函数模式
内容总结
以上是互联网集市为您收集整理的如何创建对象全部内容,希望文章能够帮你解决如何创建对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。