JSOO--day01原型以及原型链

1,面向对象
面向对象:类和对象
类是对象的抽象,对象是类的实例

JavaScript原型对象(类) 和 实例对象;es6 以及推出了类,接口
特效:
封装:可重复调用,隐藏内部实现,暴露接口
继承:继承可以使用被继承对象的属性和方法
多态:个性
面向过程
自顶向下,逐步细化

2,JSOO 即JavaScript中实现面向对象的思想
基于原型的面向对象思维,‘原型对象’是基于原型语言的核心概念。
js中对象继承对象,而不是类继承类;
顶层对象是Object;

3,引用类型的拷贝
浅拷贝:复制内存地址(默认)
深拷贝:复制值(自己写)
数组深拷贝
var arr = [1,2,3,4,56];
var arr2=new Array();
/es6/arr2 = […arr];

for(var i=0;i<arr.length;i++){
arr2.push(arr[i]);
}

对象深拷贝
var obj = {name:‘张三’,age:18};
var obj2 = new Object();
for (var ker in obj){

obj2[key]=obj[key]

}

4,面向对象的回顾

所有对象的顶层对象是Object,Object的顶层为null;

js提供的原生对象:String,Array,Object,Function

对象声明:
1,var obj = new Object ();
2,var obj ={};
3,工厂模式
function createObject(){
var obj = new Object();
obj.xx
obj.xx=function(){}
return obj ;
}
4,构造函数
functtion fun (){
this.xxx;
this.xxx;
}

5,原型
Object的__peoto__就是null
如果想要给所有,都添加某个属性或者方法,就将对应属性或方法加在原型对象上

proto:任何对象都有找到__proto__,IE不支持

prototype:函数才有prototype,typeof返回的是function 那么它就有prototype属性

总结:
proto__是一个私有属性,用于追溯来源,js内部使用,但是IE不支持,而一般也不要使用私有变量
prototype:是专门的一个开发接口,可以自定义原型的属性和方法,
注:原型只是在new的时候上有一定的价值,原型链的本质是__proto

6.原型链
特点:对象在使用属性时,从自身开始一直向上找,找到了就不在向上了
想继承某个对象的属性和方法,把prototype指向对应的实例对象。
不管原型对象如何改变,自身的构造函数都会执行

原型对象:Dog.prototype
实例对象:new Dog ()
函数对象:Dog

7,作用域
变量作用域,函数作用域
变量和函数的提升(变量的声明和函数的定义,都会进行提升,提升到对应作用域的最前面)

2020/05/14 15:30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值