JS学习笔记/6.6

又理解错的......

var word_2 = "do another thing.";
var function_1=function(callback){
    this.word_1 = "do something.";
    console.log(this.word_1);
    (callback && typeof(callback) === "function") && callback();
}
var function_2=function(){console.log(this.word_2)};
function_1(function_2);

执行结果为do something.do another thing

其中包含回调函数与this的引用,function_1回调function_2时,找不到function_2中this.word_2, 那么就会去外层找全局变量,所以输出为do another thing。

<br />

原型对象prototype

每个函数都有一个prototype原型,example.prototype即为example的原型对象,那么所有实例化对象的[[prototype]]都指向原型对象。

通过new实例化的对象会继承example.prototype的所有方法属性,并与之变化而变化,所以,我们也可根据添加原型对象的方法来添加实例化后实例的方法。

原型链

通过原型链可以实现原型继承,通过下面这个mozilla给出的例子可以很清楚的了解到。

// 假定有一个对象 o, 其自身的属性(own properties)有 a 和 b:
// {a: 1, b: 2}
// o 的原型 o.[[Prototype]]有属性 b 和 c:
// {b: 3, c: 4}
// 最后, o.[[Prototype]].[[Prototype]] 是 null.
// 这就是原型链的末尾,即 null,
// 根据定义,null 没有[[Prototype]].
// 综上,整个原型链如下: 
// {a:1, b:2} ---> {b:3, c:4} ---> null

console.log(o.a); // 1
// a是o的自身属性吗?是的,该属性的值为1

console.log(o.b); // 2
// b是o的自身属性吗?是的,该属性的值为2
// o.[[Prototype]]上还有一个'b'属性,但是它不会被访问到.这种情况称为"属性遮蔽 (property shadowing)".

console.log(o.c); // 4
// c是o的自身属性吗?不是,那看看o.[[Prototype]]上有没有.
// c是o.[[Prototype]]的自身属性吗?是的,该属性的值为4

console.log(o.d); // undefined
// d是o的自身属性吗?不是,那看看o.[[Prototype]]上有没有.
// d是o.[[Prototype]]的自身属性吗?不是,那看看o.[[Prototype]].[[Prototype]]上有没有.
// o.[[Prototype]].[[Prototype]]为null,停止搜索,
// 没有d属性,返回undefined

2.实例化后的对象(比如o),在给对象的num赋值时,如果o的自有属性中有num属性,则覆盖,若自有属性和继承属性中都没有num属性或仅继承属性中有此属性,则创建自有属性num并给其赋值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2016.9.9 第6章 原型与面向对象 原型虽然是定义对象的一种很方便的方式,但它的本质依然是函数特性。 使用原...
    如201608阅读 705评论 0 0
  • 在JavaScript中,一切都是对象。 使用深度优先遍历,element是一个DOM元素,selectors是一...
    garble阅读 585评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,328评论 0 7