JS中的对象
1、函数:工具,对象:工具包;框架:多个对象;
2、JSON协议是国际标准规定的一种书写方式(协议、标准),JSON对象就是对象字面量;(恰好协议和对象的格式相同)
3、JS里面的对象和其他语言不太一样,它通过两个对象(构造函数对象和原型对象)来完成定义对象的功能;
1 <script>
2 function Product(){
3 //构造函数属性
4 this.name= "";
5 //构造函数方法
6 this.test = function(){
7
8 }
9 }
10
11 Product.prototype={
12 //原型对象属性
13 Price:1000,
14 //原型对象方法
15 Buy:function(){
16
17 }
18 }
19 </script>
4、任何对象都包含一个隐藏的属性__proto__,其指向构造函数的原型对象,原型对象中的constructor指向构造函数;
5、面向对象好处:分类管理、封装性,模块化、方便寻找错误、代码修改方便,扩展容易、面向未来编程;
6、检测对象数据类型:toString.call(obj);判断一个变量是不是对象非常简单。值类型的类型判断用typeof,引用类型的类型判断用instanceof;
7、JS中new一个实例干了三件事:创建一个空对象、拷贝构造函数中的方法属性到空对象中、自动生成一个属性__proto__指向构造函数的原型(p.__proto__ === Product.prototype);
8、将伪数组转换成真数组:比如Array.prototype.slice.call(arguments);
9、apply的巧妙用法:广泛应用于可变参数的函数调用,比如Array.prototype.push(arr1,arr2);
10、对象属性搜索机制:首先在构造函数中寻找属性(方法),如果没找到,找到该对象的__proto__指向的对象,继续寻找属性(方法),如此无限循环,直到__proto__为null;
11、面向对象:就是提炼属性方法,JS跟后台语言机制不太一样,JS是通过原型链来实现属性搜索机制;
12、继承的作用:减少重复的代码、开放封闭原则;
<script type="text/javascript"> function Base(){} Base.prototype = {} function Product(){ Base.call(this,arguments); this.name = ""; this.desc = ""; } Product.prototype= new Base();//修改Product的原型链 </script>