原型(对象):构造函数的prototype属性的值
原型是 Object类
原型 是(数据共享) 最终为了实现继承
Object.prototype.age=30; //不能这么做
这样 任何对象都能访问到
函数 : 复用
构造函数:与new关键字一起用; 复用(模板,复用产生对象的代码)
对象::指JavaScript中复杂数据类型
BOM:history /window.open() / hash(地址栏的#) /location
javascript: 值类型 引用类型 空类型null undefined
复合数据类型: object function
typeof null ==> object
常见内置对象:Object Function Array Date Math
将代码进行封装,复用的逻辑单元(代码) 称为 函数
什么是对象 : 无序键值对的集合
什么是数组 : 有序 键值对的集合
细分:
什么是属性:对象属性的值是一个普通的数据
什么是方法: 如果对象的属性是一个函数,叫方法
成员:包括属性和方法
_________________________________________________________
构造函数 用来在创建对象时,对对象进行初始化
new 运算符创建一个新对象 后面跟一个函数调用
constructor: 构造函数
1.new 申请内存 创建对象(空对象)
2.将新对象的引用赋值给this
3.调用构造函数,利用this.成员=值,来给对象添加成员
4.返回新对象(不用使用return)
默认情况下原型对象中有一个 constructor 属性
这个属性指向了当前构造函数
Person.prototype.constructor==Person
______________________________________________________
面向对象的三大特征:
1.封装
通过一个函数将一段代码逻辑包裹起来,将简单的调用留在外面,
调用这个函数时就非常方便
2.继承
()()拿来主义
继承中最少是需要两个对象的
一个对象会继承自另外一个对象,:一个对象可以使用另外一个对象
中的方法!
其他编程员中,都是通过类来继承的(子类可以继承自父类)
在低版本的js中是 没有类的概念的//通过构造函数来模拟类
js中的继承:原型继承
js中实现继承的方式:
2.1.混入式继承:一个对象可以继承自多个对象中的属性和方法
或者:将多个对象中的属性和方法放到同一个对象中 这样一个就继承
自多个对象了;
让o继承自obj:
for(var k in obj){ o[k]=obj[k] };
extend:扩展
2.2.原型式继承:
如果想让一个对象能够使用某种属性和方法,
只需要将这些属性和方法放到原型对象中,因为实例对象可以直接
访问原型对象中的属性和方法.这样就实现了原型继承!
必须有构造函数
有三种添加属性和方法的方式:
1.利用对象的动态性添加成员
function Person(){}
Person.prototype.say=function(){}
var p=new Person();
p.say();
2.利用覆盖原型对象的方式添加成员
3.利用混入式继承添加成员
2.3.经典继承 object.create();
语法: 新对象 =Object.create(参数对象)
var obj={name:'xm'} var newObj=Object.create(obj)
创建对象的三种方式:
var obj={} var obj=new Object() var obj=Object.create(对象)
//空对象 没有任何东西
var kong = Object.create(null);
3.多态(js不支持多态,基于强类型)
屏蔽差异,写出通用的编程
类是范围 对象是特指
json2.js 兼容处理 JSON.parse(); 将json字符串转化为js对象
javascript语言精粹
____________________________________________________
什么是原型链:
任何一个对象都有原型对象,原型对象也是对象,所以原型对象
也有原型对象 这种链式结构称为:原型链
通过__proto__来查看任何一个对象的原型链结构
实例对象p 的原型链:
p-- Preson.prototype -- Object.prototype -- null
对象: {}
obj-- Object.prototype -- null
数组: []
arr - Array.prototype --Object.prototype -- null
通过查看 对象的 __proto__属性来分析
在创建对象的那一刻,对象的原型对象(原型链)就固定下来了;;
属性搜索原则:
访问对象的属性就是通过原型链进行搜索
继承的实现方式:(重点)
混入式继承 原型继承(给原型对象添加成员) Object.create
原型链中包含了很多个原型对象
属性的搜索原则就是沿着原型链 进行搜索的
in 运算符 ,就是根据 原型链进行判断的!!
笔记连载中 , 温故而知新!