javaScript是一种比较特殊的语言,ECMAScript中没有类的概念,跟其他面向对象的语言有一定的区别,它的对象也与基于类的语言中的对象有所不同,严格来说,javascript对象是一组没有特定顺序的值,对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。每个对象都是基于一个引用类型的创建的。
创建自定义对象的最简单的方式就是创建一个Object的实例,然后再为其添加属性和方法,如:
javascript原型对象创建。
var box = new Object(); //创建对象
box.name1 = 'Lee'; //添加属性
box.age = 100; //
box.run = function () {return this.name1 + this.age //this表示当前作用域下对象
不足:使用同一个接口创建很多对象,会产生很多重复代码。
javascript面向对象编程、工厂模式:
在ECMAScript中无法创建类,开发人员就想出了另外一种方法,用一种函数来封装以特定接口创建对象的细节,如:
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('lilei',29,'Software Engineer');var person2 = createPerson('Greg',27,'Doctor');person1.sayName();person2.sayName();alert(typeof person1);alert(typeof person2);
java面向对象的经典例子、
构造函数模式
function Person(name,age,job){this.name = name;this.age = age;this.job = job;this.sayName = function(){alert(this.name);};}var person1 = new Person('lilei',29,'Software Engineer');var person2 =new Person('Greg',27,'Doctor');person1.sayName();person2.sayName();alert( person1 instanceof Object); alert( person2 instanceof Person);
js面向对象编程、
在这个例子当中,Person()函数取代了createPerson()函数。同时注意到跟createPerson()函数的区别:
没有显式地创建对象;
直接将属性和方法赋给了this对象;
没有return 语句;
构成方法首个字母大写;
构造函数的的问题也有,就是每个方法都要在每个实例上重新创建一遍,
组合使用构造函数模式和原型模式
创建自定义类型常见的方式是组合使用构造函数模式和原型模式。构造函数模式用于定义实例属性,而原型模式用定义方法和共享属性,从而每个实例都会有 自己的一份实例属性的副本,但同时又共享着对方的方法的引用,
function Person(name,age,job){this.name =name;this.age = age;this.friends = ["Shelpy","Court"];}Person.prototype = {constructor:Person,sayName:function(){alert(this.name)}}var person1 = new Person('lilei',29,'Software Engineer');var person2 = new Person('Greg',27,'Doctor');person1.friends.push("Van");alert(person1.friends);alert(person2.friends);alert(person1.friends === person2.friends);alert(person1.sayName === person2.sayName);
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态