u 基于对象编程和面向对象编程叫法区分
js 中我们可以认为这个叫法一致.
u js的面对对象编程的介绍
js是一种支持面向对象编程的脚本语句, 它有继承,封装,多态的特点.
课程中 基于对象==面向对象 类==原型对象
u 面向对象编程的引入
一个问题?
张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。
还有一只叫小花,今年10岁,花色。请编写一个程序,
当用户输入小猫的名字时,就显示该猫的名字,年龄,
颜色。如果用户输入的小猫名错误,则显示 张老太没
有这只猫猫。
我们的一个解决方法是 :(js面向对象编程的快速入门)
<html>
<head>
<meta http-equiv="content-type"content="text/html;charset=utf-8"/>
<script type="text/javascript">
//定义了一个猫类
function Cat(){
}
//创建一只猫 [js对象的属性可以动态增加]
var cat1=new Cat(); //cat1就是一个对象实例
cat1.name="小白"; //
cat1.age=3;
cat1.color="白色"
document.write(cat1.name+"--"+cat1.age+"--"+cat1.color);
//特别说明
// var cat1=new Cat(); //当做类(原型对象使用)
// Cat(); //当做函数
</script>
</html>
对象公开属性的访问方式有
对象名.属性名;
对象名[’属性名’];
u js中自定义类(原型对象)的五种方法
1. 工厂方法
2. 通过构造函数来定义类(最多)
3. 通过prototype 来定义
4. 构造函数 和prototype混合
5. 动态创建对象模式
u js中一切都是对象
var i=0;
window.alert(i.constructor);
function Person(){
}
var p1=new Person();
window.alert(p1.constructor);
window.alert(Person.constructor);
window.alert(Function.constructor);
可用通过instanceof 来 判断某个对象实例是不是某个类的对象实例,
案例:
//如何判断一个对象实例是不是某个 类(原型对象)
if(p1 instanceof Dog){
window.alert("p1是Person一个对象实例");
}else{
window.alert("p1是Dog一个对象实例");
}
u js的对象在内存中是怎样存在?
var a=newPerson();
a.age=10;
a.name=“小明”;
var b=a;
将发现 a.age和b.age 都是60
因为a b指向同一个对象