JavaScript对象实例化
参考资料:《JavaScript⼊门经典》
利⽤内置对象创建直接实例
JavaScript有⼀个内置对象Object,利⽤它可以创建⼀个空⽩的对象。
aObject = new Object();
添加属性
这样,我们就创建了没有任何属性和⽅法的空⽩对象。现在我们可以⽤以下⽅法为对象添加属性:
aObject.info = "I am a obeject";
现在,我们成功为aObject对象添加了⼀个名为info的属性,它是⼀个⽂本字符串。
添加⽅法
为对象添加⽅法也很简单,⾸先我们需要定义⼀个函数,然后把函数关联到aObject对象上就可以了。如
function show(){
alert(this.info);}//定义⼀个函数
aObject.showInfo=show; //附加到aObject的⽅法上
aObject.showInfo();// 调⽤showInfo⽅法
注意:把函数关联到对象上时,不能包括函数括号,只能使⽤函数名称。因为我们是要把函数show()赋予aObject.showInfo⽅法,⽽不是调⽤函数。
如果加上括号,如
aObject.showInfo=show();// 表⽰调⽤函数,并把函数的返回值赋予aObject.showInfo
在这⾥,我们定义函数的时候,⽤到了this关键字,在以这种⽅式使⽤时,this指代当前调⽤这个函数的对象。
但是如果直接调⽤show()函数时,会显⽰"undefined",因为这时候调⽤函数的对象是全局对象window,⽽window对象并没有名为info 的属性。
事实上,给对象设置⽅法还有⼀种更简单⽅便的⽅法,那就是使⽤匿名函数。
aObject.showInfo=function () {
alert(this.info);
} // 同样实现了给aObject对象添加了showInfo⽅法。但不需要给⾃定义的函数命名,所以被叫做匿名函数
使⽤类似的语句,我们可以给实例化的对象添加任意多的属性和⽅法
<title>demo1</title>
<script>
aObject = new Object();
aObject.info = "I am a Object";
function  show() {
alert(this.info);
}
aObject.showInfo1 = show;
// aObject.showInfo=function () { 两种⽅法有同样的效果
//    alert(this.info);
// }
</script>
</head>
<input type="button" value="正确的调⽤" οnclick="aObject.showInfo1()">
<input type="button" value="错误的调⽤" οnclick="show()">
</body>
</html>
利⽤构造函数实例化对象
当我们需要实例化多个对象时,有必要使⽤构造函数来创建对象。
构造函数的声明
function Person(personName) { // 括号内为参数,可以设置多个参数来定制对象。
this.name = personName; // 将传⼊的personName值赋予name属性
this.info = 'I am called' + this.name; //设置info属性
this.infoShow = function () {  // 利⽤匿名函数添加⽅法
alert(this.info);
实例化类和实例化对象
}
}
对象实例化
var person1 = new Person('Adam');
var person2 = new Person('Eve'); //利⽤构造函数实例化了两个对象,并根据传⼊的参数的不同,定制了两个不同的对象。⽰例:
<title>demo1</title>
<script>
function Person(personName) {
this.name = personName;
this.info = 'I am called' + this.name;
this.infoShow = function () {
alert(this.info);
}
}
var person1 = new Person('Adam');
var person2 = new Person('Eve');
</script>
</head>
<body>
<input type="button" value="show info on Adam" οnclick="person1.infoShow()"><br> <input type="button" value="show info on Eve" οnclick="person2.infoShow()">
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。