javascript
文章平均质量分 56
错爱谁
这个作者很懒,什么都没留下…
展开
-
JavaScript的this学习笔记
1 浏览器宿主的全局环境中,this指的是window对象 2 浏览器中在全局环境下,使用var声明变量其实就是赋值给this或window 3 任何情况下,创建变量时没有使用var或者let(ECMAScript 6),也是在操作全局this foo = "bar"; function testThis() { foo = "foo"; } conso原创 2017-11-13 23:19:35 · 143 阅读 · 0 评论 -
你不知道的JavaScript之原生函数
1 常见的原生函数(注意首字母大写),可以当作构造函数使用String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol()2 通过构造函数创建出来的是封装了基本类型值的封装对象3 内部属性[[Class]]:所有typeof 返回值为"object"的对象都包含一个内部属性[...原创 2018-07-21 13:52:21 · 193 阅读 · 0 评论 -
你不知道的JavaScript之值(下)
四 特殊的值1 null是一个特殊的关键字,不是标识符,不能当变量来使用和赋值,但undefined却是一个标识符,可以当变量来使用和赋值,不过永远不要重新定义undefined 。2 void Θ 运算符可以还得undefined3 如果数学运算的操作数不是数字类型,返回值为NaN。NaN是指“不是一个数字”,理解为“无效数值”可能更好。NaN是一个特殊值,它和自身不相等,是唯一一个非自反的值。...原创 2018-07-14 15:07:52 · 170 阅读 · 0 评论 -
你不知道的JavaScript之值(上)
一 数组1 delete运算符可以将单元从数组中删除,但length属性不会发生变化。2 数组通过数字进行索引,但数组也是对象,所以也可以包含字符串键值和属性(不过不计算在数组长度内)如果字符串键值能被强制转换为十进制数字,会被当数字索引处理var a=[];a[0]=1;a["footer"]=2;a.length; //1a["232"]=233;a.length; //2333 类...原创 2018-07-13 15:34:08 · 152 阅读 · 0 评论 -
你不知道的JavaScript之类型
1 内置类型 null,undefined,boolean,string,number,object,symbol 除对象外其余为基本类型object的子类型函数和数组,null是bugtypeof function a(...); // functiontypeof [1,2,3]; // objecttypeof null; // object2 js中变量没有类型,值才有。typeof...原创 2018-07-12 14:39:05 · 133 阅读 · 0 评论 -
你不知道的JavaScript之原型(二)
1 继承function Foo(name){ this.name=name;}Foo.prototype.myName=function() { return this.name;}function Bar(name,label){ Foo.call(this,name); this.label=label;}Bar.prototype=Object.create(Fo...原创 2018-06-10 15:58:37 · 165 阅读 · 0 评论 -
你不知道的JavaScript之对象(二)
1 writable(可写)如果要writable:false一致的话,setter被调用时应该抛出应该TypeError错误2 configurable(可配置)把configurable修改成false是单向操作,无法撤销,而且还会禁止删除属性。例外:configurable:false还是可以把writable由true为false,反之不行。3 enumerable(可枚举)控制属性是否出...原创 2018-06-02 15:18:04 · 242 阅读 · 0 评论 -
你不知道的JavaScript之对象(一)
1 对象的定义 文字声明形式和构造形式声明:var obj={ key:value};构造:var obj=new Object();obj.key=value;区别:声明可以添加多个键/值对,但构造形式必须逐个添加2 简单基本类型(string,boolean,number,null,undefined)本身不是对象。typeof null虽然返回object 但这是一个历史遗留的...原创 2018-06-01 20:30:13 · 107 阅读 · 0 评论 -
你不知道的JavaScript之this(二)
1 优先级 new绑定>显式绑定>隐式绑定>默认绑定2 柯里化:是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。(.bind()可以进行柯里化)function foo(p1,p2) { this.val=p1+p2;} var bar=foo.bind(null,"p1");var b...原创 2018-05-31 21:15:03 · 138 阅读 · 0 评论 -
你不知道的JavaScript之this(一)
1 this绑定和函数声明的位置没有任何关系,只取决于函数的调用位置。2 this和词法作用域的查找混合使用时,无法实现function foo() { var a=2; this.bar();}function bar() { console.log(this.a);}foo();//undefined3 默认绑定指向全局对象;函数直接使用不带任何修饰的函数引用进行调用的,只能使用...原创 2018-05-30 17:49:42 · 142 阅读 · 0 评论 -
你不知道的JavaScript之原型(一)
1 [[prototype]]这个内置属性其实就是对于其他对象的引用,所有普通的[[prototype]]链最终都会指向内置的Object.prototype。2 new Foo()这个函数调用实际上并没有直接创建关联,只是间接完成一个关联到其他对象的新对象。3 构造函数:所有带new的函数调用。4 constructor并不表示被构造,它不可被枚举但值是可以修改。function Foo{......原创 2018-06-03 14:48:35 · 140 阅读 · 0 评论 -
你不知道的JavaScript之作用域闭包学习心得(四)
1 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即时函数是在当前词法作用域之外执行。2 闭包举例function foo(){ var a=2; function bar(){ console.log(a); } return bar;}var baz=foo();baz();// 2foo()执行后,返回值bar()函数赋值给变量baz并调用baz()。通常情况下,f...原创 2018-05-14 15:11:39 · 128 阅读 · 0 评论 -
你不知道的JavaScript之作用域闭包学习心得(一)
1 任何JavaScript代码片段执行前都要编译2 变量赋值操作两个步骤,首先在当前作用域声明该变量(假设该变量之前未被声明),之后在运行时在作用域中查找该变量,若能知道,就进行赋值3 LHS:赋值操作的目标是谁 RHS:谁是赋值操作的源头,都从当前作用域开始,一层一层向上找,最后到全局作用域停止查找。注意隐式的LHS a=24 严格模式禁止自动或者隐式创建全局变量5 ReferenceEr...原创 2018-04-28 16:08:02 · 134 阅读 · 0 评论 -
你不知道的JavaScript之作用域闭包学习心得(二)
1 函数作用域:属于这个函数的全部变量都可以在整个函数的范围内使用及复用。 2 最小暴露原则:软件设计中,应该最小限度地暴露必要内容,而将其他内容都隐藏起来。function dothing(a){ b=doelse(a*2); console.log(b*3);}function doelse(a){ return a-1; }var b;dothing(2)f原创 2018-05-06 12:25:01 · 122 阅读 · 0 评论 -
你不知道的JavaScript之作用域闭包学习心得(三)
1 只有声明本身会被提升,而赋值或其他运行逻辑会留在原地。2 每个作用域都会进行提升操作,名称标识符赋值之前也无法在所在作用域中使用foo(); //TypeErrorbar(); //ReferenceErrorvar foo=function bar(){...}3 函数会首先被提升,然后才是变量。重复的声明会被忽略。但后面出现的函数声明是可以覆盖前面的。foo(); //1var fo...原创 2018-05-11 15:07:42 · 134 阅读 · 0 评论 -
你不知道的JavaScript之强制类型转换(上)
(一)什么是类型转换将值从一种类型转换为另一种类型称为类型转换,这是显式的情况,而隐式的情况称为强制类型转换。也可以这样区分:类型转换发送在静态类型语言的编译阶段,而强制类型转换则发生在动态类型语言的运行时。(二)抽象值操作1 ToString对基本类型值时,会创建一个封装对象,再调用toString()。null转为"null",undefined转为"undefined",...原创 2018-07-22 14:15:37 · 204 阅读 · 1 评论