本文主要是介绍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
这篇关于JSOO--day01原型以及原型链的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!