构造函数/原型/作用域链
来源:互联网 发布:蚁群算法的优缺点 编辑:程序博客网 时间:2024/06/09 13:39
function Person(name,age){this.name=name;this.age=age;this.say=function(){console.log('我叫'+this.name);};}Person.prototype.say=function(){ console.log('我叫'+this.name);};Person.prototype.sex='男';
知识点
//构造函数 Person这个函数就是一个构造函数.前提是用new调用它, 构造函数的作用就是用来创建对象的,
//创建对象 p1就是创建的对象
//实例 new Person('小明',18)就是实例;
//实例化 Person里执行函数的过程就是 实例化
//原型 函数身上的属性prototype .它的值是一个对象, 它身上可以放属性和方法
var p1=new Person('小明',18);
一 丶构造函数和原型
通过构造函数创建的对象就会具有(构造函数原型)身上的属性与方法
p1是通过构造函数创建的对象,那它就会有(构造函数身原型身上的属性和方法) person.prototype
p1.say();
//二丶作用域链
*为什么p1会有构造函数原型身上的方法呢?
原因是作用域链的关系,
当我们去调用p1身上的say(属性和方法)时,那它就会按照一定的规则去查找
1.首先p1会在自己身上找,如果有的话就用自己的
2.如果没有的话,他就会在p1(该对象)的__proto__下去查找,刚好p1的__proto__的值等于person的prototype的值,如果找到了就拿过来用,
3.如果person的prototype身上也没有,那它就会一致往外找,直到找到最顶层的object身上的prototype
三丶__proto__
p1是person的实例 p1是一个对象,p1身上有__proto__这个属性 p1身上的__proto__属性的值也是一个*对象* ,*对象*的值就person的prototype的值
简单的来说就是p1的__proto__的值等于person的prototype的值
__proto__
对象身上的属性,每一个对象身上都会有这个属性。它的值也是一个对象,它的值就是它对应的构造函数的prototype的值
对象.__proto__===构造函数.prototype
对象之所以能够继承原型身上的属性与方法,是因为每个对象身上都有一个__proto__,那__proto__的值指向了构造函数的prototype
阅读全文
0 0
- 构造函数/原型/作用域链
- 构造函数、原型、原型链
- 原型链与构造函数
- JSON字符串/原型链/构造函数
- new构造函数和原型链
- JavaScript核心:对象 原型链 构造函数 执行上下文栈 执行上下文 变量对象 活动对象 作用域链 闭包 This 总结
- js关于原型构造函数和原型链的理解
- Js中的对象、构造函数、原型、原型链及继承
- js中的构造函数,原型,原型链,继承
- Js中的对象、构造函数、原型、原型链及继承
- 对象-工厂模式-构造函数-原型-原型链
- 面向对象,创建对象,构造函数,原型,原型链
- 面向对象、构造函数、原型与原型链详解
- 类、构造函数、原型
- 构造函数与原型
- 原型与构造函数
- 对象、构造函数、原型
- 作用域链&原型链
- myQuickSortCode
- SVM-支持向量机学习(5):SVR-支持向量回归
- LeakCanary 中的 IdleHandler简介
- 玩转svn命令行
- Android权限管理之Permission权限机制及使用
- 构造函数/原型/作用域链
- ButterKnife+ButterKnife Zelezny 控件空指针问题
- 【android学习】Dialog对话框
- 邮箱服务器(二) javamail
- Java多线程--四种线程池
- Dubbo框架
- python中threading模块详解及常用方法
- android NotificationListenerService监听通知栏(qq 微信 短信)
- js中===和==的区别