对象的定义
无序属性的集合,其属性可以包含基本值、对象或者函数,。对象的每个属性或方 法都有一个名字,而每个名字都映射到一个值,每个对象都是基于一个引用类型创建的。
如何创建对象?
1、使用new关键字调用构造器创建对象;
在JavaScript中,所有的函数名可以看成一个类名;
函数名和其参数可以看成一个构造器用于构造对象;
使用构造函数模式创建对象的几点注意事项:
(1):没有明显的创建对象
(2):直接将属性和方法赋给this对象
(3):没有return语句
(4):创建Student实例的时候,必须要使用new操作符;
function Student(name,age){ this.name=name;//this是当前对象的引用; this.age=age; } var s1=new Student();//没有传入参数,函数里面的name,age是undefine var s2=new Student("wangshicheng",20); document.write(s1.name+s1.age);//都是undefine; document.write(s2.name+s2.age);//都是传入实参的值;
2、使用Object直接创建对象
var myObj=new Object();//使用Object类创建一个空的对象 myObj.name="wangshihcheng"; myObj.age=20; myObj.infor=function(){ document.write("名字:"+this.name);//this.的指向问题 document.write("年龄:"+this.age); } myObj.infor();//调用创建的对象里面的方法;
3、原型模式创建对象
在JavaScript中,每个函数都有一个prototype属性,它是一个指针,指向一个对象,叫做
原型对象,原型对象包含了可以由特定类型的所有实例对象共享的属性和方法;
另外,这个对象有一个自带的属性constructor,指向创建对象的构造方法;
当我们使用原型模式时可以使所有的实例共享原型对象的属性和方法,
从而我们不必要早构造函数中定义对象的实例的信息;
function Student(){ } Student.prototype.name="wang"; Student.prototype.sex="man"; Student.prototype.class="5"; Student.prototype.sayName=function(){ console.log(this.name); } var s1=new Student(); s1.sayName();//wang var s2=new Student(); s2.sayName();//wang s2.name="shicheng"; s2.sayName();//shicheng
当我们读取某个对象的属性时,都会执行一次搜索,搜索首先从对象实例本身开始,
如果在实例中找到了这个属性,则搜索结束,返回属性的值;
若实例上没有找到,则继续向对象的原型对象上面延申,搜索对象的原型对象,若在原型上面
找到这个属性,则返回原型上面属性对应的值,若没有找到,则返回undefine;
因此,可以看出,实例对象属性会覆盖原型对象上面的属性;
4、组合使用构造函数和原型模式
构造函数用于定义实例的属性,原型模式则用于定义方法和共享的属性;
function Student(name,sex,grade){ this.name=name; this.sex=sex; this.grade=grade; } Student.prototype.sayName=function(){ console.log(this.name); } Student.prototype.school="nongda";
这种混合模式可以支持想构造函数传入参数,还极大的节约了内存。
以上就是javascript如何创建一个对象?的详细内容,更多请关注易知道|edz.cc其它相关文章!