◆澄清概念:
js中 基于对象 == js 面向对象
js中没有类class关键字,但是它取了一个新的名字叫 原型对象,因此 类==原型对象
◆ 为什么需要对象
问题提出;
/*
张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。
还有一只叫小花,今年10岁,花色.请编写一个程序,
当用户输入小猫的名字时,就现实该猫的名字,年龄,
颜色。如果用户输入的小猫名错误,则显示 张老太没
有这只猫猫。
*/
//传统方法,比较麻烦
var cat1_name="小白";
var cat1_age=3;
var cat1_color="白色";
//。。解决方法,把猫的属性集中,创建一种新的数据类型(原型对象 / 类)
//用面向对象的方法来解决上面的问题
//这里就是一个Cat类
function Cat(){
}
//如果你这样用
//Cat();//函数
var cat1=new Cat();//类
//这时cat1就是一个对象(实例)
cat1.name="小白";
cat1.age=3;
cat1.color="白色";
//从上面的代码我们可以看出
//1.js中的对象的属性可以动态的添加
//2.属性没有限制,
window.alert(cat1.name+cat1.age+cat1.color+cat1.hobby);
类(原型对象)和对象的区别和联系
(1) 类是抽象的,概念,代表一类事物
(2) 对象是具体的代表一个实体,
(3) 对象是以类(原型对象)为模版创建的
目前我们先讲 使用构造函数来定义类(原型对象),然后在创建对象实例
基本语法
funtion 类名/原型对象名 (){
}
创建对象
var 对象名=new 类名():
现在对对象特别说明:
① js中一切都是对象
function Person(){}
window.alert(Person.constructor);
window.alert(typeof Person);
var a=new Person();
window.alert(a.constructor);//a 对象实例的构造函数
window.alert(typeof a);//a 的类型是什么
var b=123;
window.alert(b.constructor);
window.alert(typeof b);
var c="123";
window.alert(c.constructor);
window.alert(typeof c);
//思考:如何判断一个对象实例是不是Person类型?
if(a instanceof Person){
window.alert("a是person ok1");
}
if(a.constructor==Person){
window.alert('a是person ok2');
}