JavaScript原型深入解析
2016-12-29 08:28
393 查看
1. JavaScript原型深入解析
1.1). prototype属性的使用
l 每个函数都有一个prototype属性, 它是一个引用变量, 默认指向一个空Object对象function fun(){} //alert(fun.prototype); //alert(typeof fun.prototype); |
l 疑问2: 函数的prototype属性什么时候起作用?
function Person(name, age) { this.name = name; this.age = age; } var p1 = new Person("hello", 11); //为p1添加一个setName方法 p1.setName = function(name){this.name = name;}; p1.setName("world"); //alert(p1.name); var p2 = new Person("test", 12); //p2.setName("test"); //p2.setName is not a function //alert(p2.name); //使用prototyp来实现 Person.prototype.setName = function(name){this.name = name;}; p2.setName("test"); alert(p2.name); var p3 = new Person("hi", 1); p3.setName("tom"); alert(p3.name); |
1.2). prototype属性的分析
l 通过new创建的对象都有一个隐含属性__proto__,l 当new 构造函数来创建一个对象时,对象的__proto__属性就被赋值为构造函数的prototype属性的值
l 当通过对象.来调用对象的属性或方法时, 先会在自己身上找, 如果没有找到就会在__proto__属性所指向的对象上找, 并依次下去
function Person(name, age) { this.name = name; this.age = age; } var p1 = new Person("hello", 111); alert(Person.prototype==p1.__proto__);//true Person.prototype.setName = function(name){this.name = name;}; p1.setName("world"); alert(p1.name); Person p2 = new Person(“A”, 123); |
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 只需四个步骤几行代码,即可快速实现直播弹幕功能
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- JavaScript 基础、进阶以及 Ubuntu 系统中的 JavaScript 开发调试工具
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 设计模式---状态模式在web前端中的应用
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法