以前学js没有系统的学习,对于js对象很陌生,今天总结一下:
先看看js对象的定义:ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。
上面这话如何理解呢?看下面的
myobject = {属性名1:属性值1,属性2:属性值,...,属性名n:属性值n}
<span style="font-size:12px;"><span style="font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;color:#443e39;font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 28px; orphans: auto; text-align: left; text-indent: 32px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none; background-color: rgb(249, 247, 241);"><strong>JavaScript支持将对象当做直接量使用,对象直接量也常用语给变量赋值。使用对象直接量给变量赋值后,该变量可以当做对象使用</strong>。</span><strong><span style="font-size:14px;">比如{}这就可以当做一个对象直接量,只不过对象里面没有属性,可以把它赋值给一个变量,其实这和方法直接量一个道理,我们声明一个方法 function(){},
然后把这个方法赋值给一个变量。</span></strong></span>
<span style="font-size:12px;"><strong><span style="font-size:14px;">
对象的创建:
方法1:对象直接量
</span></strong></span><pre name="code" class="html"> $(function(){
teacher={
name:"小明老师",
student:{
name:"小李",
study:function(){
alert("好好学习");
}
},
teach:function(){
alert("好好教书");
}
}
});
在html中的调用如下:<pre name="code" class="html"> <a href="javascript:;" οnclick="teacher.student.study();">学生</a>
<a href="javascript:;" οnclick="teacher.teach();">老师</a>
方法二:使用new关键字创建
var person=new Object();
person.name="小李";
person.age=25;
person.say=function(){
alert("hello");
}
<a href="javascript:;" οnclick="person.say();">人</a>
注意:创建对象的时候不要在$(function(){})里面,在方法外面
方法三:工厂模式:
var Car = (function(){
var Car = function(model,year,miles){
this.model = model;
this.year = year;
this.miles = miles;
};
return function(model,year,miles){
return new Car(model,year,miles);
}
})();
var Benz = new Car("Benz",2014,1000);
var Audi = new Car("Audi",2013,800);
方法四:构造器
function Person(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
alert(this.name);
}
}
var person1 = new Person("trigkit4",21);
var person2 = new Person("Jack",25,);
工厂模式和构造器模式差不多,一般很少用
下面在说一下一个题外的问题: