理解javascript原型链
来源:互联网 发布:广东人吃福建人 知乎 编辑:程序博客网 时间:2024/06/05 05:11
要理解javascript的原型链首先要明白javascript创建对象的方式
1、对象有数据属性和访问器属性,可以使用defineProperty来创建
数据属性具有四个特性:
Configurable:能够通过delete属性删除而重新定义属性,默认true
Enumerable:能够通过for in循环属性。默认true
Writable:能够修改
Value:包含的数据值
访问器属性有四个特性:
Configurable
Enumerable
Getter:读取属性,默认undefined
Setter:设置属性,默认undefined
2、创建对象
1)字面量
var s={}
2)Object构造函数
var obj=new Object();
3)工厂模式
function creatObj(){ var o=new Object(); o.name='hello'; o.sayHello=function(){ console.log("Hello World"); } ...... return o;}工厂模式的弊端在于我创建了什么对象我并不知道,我只知道我创建了对象
4)构造函数模式
function Person(){ this.name='hello'; this.phone='12345'; this.sayHello=function(){ console.log('Hello World'); }}构造函数的弊端:方法没能够复用,会创建两次sayHello
5)原型模式
function Person(){}Person.prototype={ name:'hello'; phone:'12345'; sayHello:function(){ console.log(this.name); }}原型模式的弊端:所有的属性都共享了
6)构造函数和原型组合
function Person(){ this.name='hello'; this.phone='12345';}Person.prototype={ sayHello:function(){ console.log(this.name); }}通过构造函数共享属性,原型共享方法
3、有了对象,自然就存在对象之间的继承(OOP的必然)
目的是什么?
1、复用父对象的方法2、子对象的属性和父对象无关联,子对象修改不会影响其他子对象
要实现这个最好的方法就是:Object.create,而其他的组合式继承、寄生式继承都会存在很多问题。
首先讲一个最主要的概念:
prototype:指向父对象的共享方法或者属性
特点:实例中访问不到,如要访问就要用proto(本身指向prototype),原型对象中可以访问
组合式继承:通过call来向父对象传递参数
寄生式继承:封装了继承过程
阅读全文
1 0
- 理解JavaScript原型链
- 理解javascript原型链
- javascript原型链理解
- 简单理解javascript原型及原型链
- 深入理解JavaScript 原型和原型链
- 深入理解JavaScript原型链
- 深入理解javascript原型链
- javascript中原型链理解
- 深入浅出理解javaScript原型链
- javaScript原型链深入理解
- 深入理解javascript原型链
- javascript原型链的理解
- 深入理解JavaScript的原型和原型链
- 深入理解JavaScript系列(二): 原型、原型链与继承
- 深入理解JavaScript系列--------强大的原型和原型链
- JavaScript原型彻底理解2---继承中的原型链
- JavaScript的原型原型链的深刻理解及运用
- 如何理解javascript中的prototype(原型)和原型链?
- 自定义视图的简单应用
- 数据指标 | 移动应用数据分析体系
- Linux指令ps,top
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)
- JMS消息平台FioranoMQ更新v10.3.0,改进共享HA功能
- 理解javascript原型链
- Relation Network笔记
- Ubuntu 更改文件夹权限及chmod详细用法
- JAVA 单列集合总结
- Elasticsearch基础教程
- 向 echarts图标工具栏toolbox中加入自定义图标/图形
- Java代理(二) 静态代理
- Java接口新特性
- CF——Codeforces Round #428 (Div. 2)C. Journey