<html>
<head>
<title>016</title>
<script type="text/javascript" charset="utf-8">
//面向对象
//js并不是面向对象的语言,只能说去模拟
/*
var obj=new Object();//var obj={};
obj.name='z3';
obj.age='男';
obj.sayName=function(){alert('我是张三');};
obj.sayName();
*/
//类的概念
//第一种类型,工厂模式
/*
function createPerson(name,sex,age){
var obj=new Object();
obj.name = name;
obj.sex = sex;
obj.age = age;
obj.sayName=function(){alert("我是"+name);};
return obj;
}
var p1 = createPerson('z3','男',20);
var p2 = createPerson('l4','女',21);
alert(p1.name);//z3
alert(p1.sex);//男
p1.sayName();//我是z3
*/
//第二种形式 构造函数 new Array new Date
//函数的第一个字母大写(类的模板)
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
this.sayName=function(){alert(name);};
}
//构造一个对象 new关键字 传递模板代码 返回对象
/*
var p1=new Person('xiao 1',21,'男');
var p2=new Person('xiao 2',22,'女');
//alert(p1.name);//xiao 1
//p2.sayName();//xiao 2
alert(p1==p2);//false 类的概念,
alert(p1.constructor==Person);//true
alert(p2.constructor==Person);//true
alert(p1 instanceof Person);//true
alert(p1 instanceof Object);//true
*/
//创建对象的方法
//1 创建构造函数
var p1=new Person('xiao',20,'男');
//2 作为普通函数去调用
Person('xiao 2',20,'男');//调用者是windows,所以属性this指windows,所以属性是全局变量
alert(name);//xiao 2
//3 在另外一个对象的作用域中调用
var o = new Object();
//call apply
Person.call(o,'xiao 4',10,'女');
o.sayName();//xiao 4
</script>
</head>
<body>
</body>
</html>
javascript中模拟面向对象编程
最新推荐文章于 2024-08-26 20:25:07 发布