摘要: 主要分为两部分,第一部分是ES5环境下的继承,另外一部分是ES6部分的继承,首先先看ES5,如何通过构造函数的形式实现继承。1:原型链继承 function Foo(name) { this.name = name; } Foo.prototype.age = function() { consol 阅读全文
posted @ 2018-09-04 19:49 boses 阅读(8719) 评论(1) 推荐(1)
摘要: 1:在构造函数内部使用严格模式,这样this的指向为undefined,为uneducated添加属性和方法会直接报错! 2:使用instanceof判断tthis的指向 这里如果默认调用this会指向全局对象,而如果使用new调用,this的指向为Foo的实例对象.。 3:使用new target 阅读全文
posted @ 2018-09-04 18:46 boses 阅读(1550) 评论(0) 推荐(0)
摘要: 无意之中看到的题目,要求输出a.x和b.x的值? 首先先说一下答案,a.x为undefined;b.x为{n:2}; 我这里用自己的语言整理一下答案, 首先a和b都指向{n:1}这个变量,我们知道在JavaScript中对象是存储在堆内存中,变量就是对象的引用地址。 这一步应该都很好理解,我画了一个 阅读全文
posted @ 2018-09-04 18:42 boses 阅读(246) 评论(0) 推荐(0)
摘要: 为了方便说明,这里全局环境是浏览器环境。 创建一个全局变量的方法最简单方法是在全局作用域下通过 var命令,但是也可以通过global(全局)来创建,因为是浏览器,这里全局为window。 这里js引擎会帮我们创创建一个全局变量b,可以通过严格模式限制。 不过除了上面说的实际上还有一个因为历史原因而 阅读全文
posted @ 2018-09-04 18:33 boses 阅读(173) 评论(0) 推荐(0)
摘要: 构造函数具有两个特点, new的作用 调用构造函数生成一个实例对象,有点类似于工厂模式,每个实例拥有构造函数的方法与属性。 使用new时可以不加"()", 不过阅读方便这里推荐加上,构造函数可以接受参数,与普通函数一样。 new 调用构造函数生成实例步骤分为四步 如果忘记加上new命令会怎么样呢? 阅读全文
posted @ 2018-09-04 18:25 boses 阅读(1066) 评论(0) 推荐(0)
摘要: 首先先看一段代码 不知道大家猜的结果是什么,是报错?还是是10,亦或者是undefined, 正确答案是undefined,之所以出现这种情况是因为变量提升到了当前作用域的顶部。 可以这样理解上面的代码 可以清楚看到结果。 但是如果是一个函数呢? 这里的运行结果会出现什么情况呢? 报错还是正常运行呢 阅读全文
posted @ 2018-09-04 18:08 boses 阅读(200) 评论(0) 推荐(0)
摘要: 这个只作为了解,不推荐使用,最大的有点就是在ECMAScript3就存在了。 ES6已经新增了let命令,实际上为我们添加了块级作用域,在ES5之前是没有的,不过可以使用这种方法来实现。 比如下面这个例子, ES6是这样写的 这里最后一行代码会报错,因为上面只在{}代码块内有效。 用try实现 不过 阅读全文
posted @ 2018-09-04 18:03 boses 阅读(150) 评论(0) 推荐(0)
摘要: 开头先给大家一个题目思考,答案在结尾揭晓。 if (a ==2 && a == 3) { //...true } [null] == ""; 首先为什么使用”==“运算符,假设我们需要在想要新建一个Object.is的函数,我们首先会怎么做,是不是判断一下这个方法是不是存在。 如果用严格相等运算符“===”,我们要怎么写? if (typeof Object.is !== 'fun... 阅读全文
posted @ 2018-09-04 18:00 boses 阅读(532) 评论(0) 推荐(0)
摘要: 这句代码大家都很属性,就是为a对象添加一个foo属性。 不过实际上执行的步骤没有这么简单, 首先会查找对象a原型是否有foo这个属性,在向自身查找,如果没有会继续在原型链上查找, 如果查找到顶层还没找到就会返回undefined,因为原型链上没有foo属性,这里会为a对象本身添加foo这个属性。 在 阅读全文
posted @ 2018-09-04 17:42 boses 阅读(129) 评论(0) 推荐(0)
摘要: 这篇文章酝酿了许久,this的指向一直是让初学者痛苦的事情,但也是有迹可循的在学习中绝对不能秉承猜测的想法来进行,这里参考了阮一峰的博客与《你所不知道的JavaScript》一书,以及自己的理解。 这篇文章分为三大部分,第一部分是ES5,第二部分是ES6,因为ES6新增了箭头函数,它有些特殊,第三这 阅读全文
posted @ 2018-09-04 17:29 boses 阅读(163) 评论(0) 推荐(0)
摘要: 首先先说立即执行函数,从名字就可以看出来立即执行函数的特点,在JavaScript中用function表示函数声明,如果在函数声明后面加上括号调用是不允许的 function f() {}(); //SyntaxError: Unexpected token ) 这里会报错,为了避免错误,我们在函数 阅读全文
posted @ 2018-09-04 17:04 boses 阅读(294) 评论(0) 推荐(0)
摘要: 开始说网格布局之前,先说一下什么是网格布局和下面用到的两个新属性,fr和repeat函数的定义。 开始说网格布局之前,先说一下什么是网格布局和下面用到的两个新属性,fr和repeat函数的定义。 如上图,网格布局就是指通过水平和垂直创建的一种模式,可以在这个模式上排列元素,网格通常具有行(row)和 阅读全文
posted @ 2018-09-04 10:16 boses 阅读(6507) 评论(0) 推荐(0)