<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js对象的创建4</title>
<meta name="author" content="ASUS" />
<!-- Date: 2014-11-13 -->
<script type="text/javascript">
/*
* 通过构造函数的方式创建对象和工厂方式类似
* 最大的区别就是函数的名称就是对象的类型名称 相当于面向对象中的类名
* 在构造函数的内部 通过this来完成属性和行为(函数)的定义
* 该方式看似很完美,但也存在很大的问题
* 问题就是所以对象都很为其行为分配空间 ??后面会讲解决方法
*/
function Person (name,age){
this.name = name;
this.age = age;
/*
this.sayHello = function(){
alert(this.name+","+this.age);
}*/
this.sayHello = sayHello;
}
var p1 = new Person("张三",20);
var p2 = new Person("李四",22);
alert(p1.sayHello==p2.sayHello);
alert(p1 instanceof Person);
/*
*对于上面的问题可以使用如下方案
* 将行为设置为全局的行,但是如何将所有的行为都定义为全局的行为
* 这样的话window对象就可以调用该行为,这样就破坏了对象的封装性
* 如何该对象有大量的行为,这样做的话,就会导致代码中充斥着大量的全局函数
* 这样也不利于开发
* this.sayHello = sayHello;
*/
function sayHello(){
alert(this.name+","+this.age);
}
</script>
</head>
<body>
</body>
</html>
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js对象的创建4</title>
<meta name="author" content="ASUS" />
<!-- Date: 2014-11-13 -->
<script type="text/javascript">
/*
* 通过构造函数的方式创建对象和工厂方式类似
* 最大的区别就是函数的名称就是对象的类型名称 相当于面向对象中的类名
* 在构造函数的内部 通过this来完成属性和行为(函数)的定义
* 该方式看似很完美,但也存在很大的问题
* 问题就是所以对象都很为其行为分配空间 ??后面会讲解决方法
*/
function Person (name,age){
this.name = name;
this.age = age;
/*
this.sayHello = function(){
alert(this.name+","+this.age);
}*/
this.sayHello = sayHello;
}
var p1 = new Person("张三",20);
var p2 = new Person("李四",22);
alert(p1.sayHello==p2.sayHello);
alert(p1 instanceof Person);
/*
*对于上面的问题可以使用如下方案
* 将行为设置为全局的行,但是如何将所有的行为都定义为全局的行为
* 这样的话window对象就可以调用该行为,这样就破坏了对象的封装性
* 如何该对象有大量的行为,这样做的话,就会导致代码中充斥着大量的全局函数
* 这样也不利于开发
* this.sayHello = sayHello;
*/
function sayHello(){
alert(this.name+","+this.age);
}
</script>
</head>
<body>
</body>
</html>