面向对象高级( 随手记-2)

来源:互联网 发布:程序员 博客 平台 编辑:程序博客网 时间:2024/04/29 17:09

原型(对象):构造函数的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 运算符 ,就是根据 原型链进行判断的!!

笔记连载中 ,  温故而知新!吐舌头

0 0