- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 布尔值Boolean
1、Boolean()方法和!!的结果是一样的,都可以来判断某个值是truth或2、== 比较的时候,会调用值的toString方法,根据值的类型调用该值原型上的toString方法,进行比较。toSting不会修改原值。
2020-06-28 17:13:07 314
原创 ES6 class类
类实际上是个“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。函数声明和类声明之间的一个重要区别是函数声明会提升,类声明不会。类中定义的方法,在原型prototype上,类中constructor构造函数定义的方法和属性 是实例对象的 class Foo { constructor(){ this.a = 1; this.b = 2; } fun
2020-06-28 17:04:09 254
原创 数组练习题
1、不使用for循环,实现一个方法,传入m n两个参数,返回一个长度为m,每项为n的数组(1)递归,使用递归也特别注意return的使用。 function func(m, n) { if(typeof m !== "number" && m <= 0){ return arr; }else { arr[arr.length] = n;
2020-06-24 15:15:38 600
原创 instanceof
instanceof运算符用于检测构造函数的prototype属性(构造函数原型)是否出现在某个实例对象的原型链上。instanceof运算符用来检测constructor.prototype是否存在于参数object的原型链上。// 定义构造函数function C(){} function D(){} var o = new C();o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototyp...
2020-06-24 13:45:08 258
原创 包装类对象
字符串、布尔值、数字都是可以调用方法的,尤其是字符串,有很多的方法可以调用,那么他们的原理是什么呢?1、字符串的原型上的方法var str = new String(); 空字符串实例该实例的原型上的方法有:2、布尔值的原型上的方法var flag = new Boolean(); 值为false的布尔类型我们知道布尔类型也重写了toString方法 var flag = true; console.log(flag.toString(.
2020-06-23 15:55:55 317
原创 Symbol类型
symbol是一种基本数据类型 (primitive data type)。每个从Symbol()返回的symbol值都是唯一的。不支持语法:"new Symbol()":从 ECMAScript 6 开始不再被支持原始数据类型创建一个显式包装器对象。 然而,现有的原始包装器对象,如new Boolean、new String以及new Number,因为遗留原因仍可被创建。所以目前只有Symbol类型不能创建包装器对象。直接使用Symbol()创建新的symbol类型,并用一个可选的字符...
2020-06-23 14:33:27 1891
原创 new操作符;构造函数的继承;构造函数的this指向;函数执行时的this指向
1、new操作符之前的修改原型申明一个函数的时候 ,该函数的prototype属性指向原型,且原型中默认是constructor属性,指向该函数。注意修改函数的prototype,是修改引用指向,还是修改了对象本身。修改引用指向,就是修改了原型,指向一个新的对象: function Foo(){ this.name = "foo"; this.age = 24 } console.log(Foo.
2020-06-22 16:44:21 767
转载 继承与原型链
在 ES2015/ES6 中引入了class关键字,但那只是语法糖,JavaScript 仍然是基于原型的,它是动态的。继承:每个实例对象( object )都有一个私有属性(称之为 __proto__ 兼容性:IE11,不是标准)指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象( __proto__ ) ,层层向上直到一个对象的原型对象为null。根据定义,null没有原型,并作为这个原型链中的最后一个环节。几乎所有 JavaScript 中的对象都...
2020-06-22 15:03:58 155
原创 Object对象原型
4、对象原型的操作(1)Object.setPrototypeOf() ES6 IE11设置对象的原型(即内部 [[Prototype]] 属性)Object.setPrototypeOf()方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。当调用该方法 的时候,如果对象的[[Prototype]]是不可扩展(通过Object.isExtensible()查看),就会抛出TypeError异常。如果prototype参数不是一个对...
2020-06-20 14:53:26 1181
原创 Object.freeze() 方法冻结对象、Object.seal()方法封闭对象、Object.preventExtensions()方法象不可扩展
3、对象的设置(1)Object.isExtensible()和Object.preventExtensions() ES5Object.isExtensible()方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。返回一个Boolean值。默认情况下,对象是可扩展的:即可以为他们添加新的属性。以及它们的__proto__属性可以被更改。Object.preventExtensions,Object.seal或Object.freeze方法都可以标记一个对象为不可扩展(...
2020-06-20 14:23:05 381
原创 Object原型上的toString和hasOwnProperty方法、Object构造函数上的两个方法Object.is和Object.assign方法
Object.prototype可以为所有 Object 类型的对象添加属性,对象原型,上面有封装好的方法。可以供所有的对象继承使用。1、Object.defineProperty()给对象添加一个属性并指定该属性的配置。Object.defineProperties()给对象添加多个属性并分别指定它们的配置。2、Object.keys()返回一个包含所有给定对象自身可枚举属性名称的数组。Object.values()返回给定对象自身可枚举值的数组。
2020-06-19 17:21:57 481
原创 数据属性和访问器属性——Object.defineProperty()方法
一、数据属性通常我们给对象设置一个属性,configurable 、 enumerable和 writable都是true。在调用 Object.defineProperty() 方法时,如果不指定, configurable 、 enumerable和 writable 特性的默认值都是 false。拥有布尔值的键configurable、enumerable和writable的默认值都是false。 属性值和函数的键value、get和set字段的默认值为undefined...
2020-06-19 14:52:29 744
原创 js数组常用方法,sort方法,reduce方法
11、indexOf方法和lastINdexOf方法 -- ES5方法正向查找和反向查找数组中的值,返回找到的第一个值的索引,如果没有返回-1 var arr = ["a","c","b","ac","bc","b"]; console.log(arr.indexOf("b"));//2 console.log(arr.lastIndexOf("b"));//512、迭代方法 -- ES5方法对数组的每一项指定一个运行函数参数:item,i
2020-06-17 20:23:39 725
原创 js数组
一、数组介绍1、数组是有序列表,每一项可以保存任何类型的数据2、创建数组的方式:(1)构造函数 var arr = new Array(1,2,3); console.log(arr);如果只是一个数字,表示数组的长度,比如: var arr = new Array(3); console.log(arr); //结果:[empty × 3](2)数组字面量与对象一样,数组字..
2020-06-17 17:03:49 441
原创 ES6箭头函数
箭头函数1、箭头函数是匿名函数JS 中的箭头函数是匿名(anonymous)的,函数的name属性是空字符。2、箭头函数没有自己的this,arguments,super或new.target,没有原型prototype,不能new对象。如果你在箭头函数引用了this、arguments或者参数之外的变量,那它们一定不是箭头函数本身包含的,而是从父级作用域继承的。3、箭头函数不支持new.targetnew.target是ES6新引入的属性,普通函数如果通过new调用,new.tar
2020-06-12 17:09:33 228
原创 ES6函数传参——默认参数和剩余参数
一、默认参数1、只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。即使显式的传入undefined(虽然不是null或其他falsy值),但是形参的值还是默认值。2、调用时解析在函数被调用时,参数默认值会被解析,比如:function append(value, array = []) { array.push(value); return array;}append(1); //[1]append(2); //[
2020-06-11 00:03:13 2105
原创 闭包closure以及闭包在实际开发中的使用
严格来说,闭包需要满足三个条件:【1】访问所在作用域;【2】函数嵌套;【3】在所在作用域外被调用有些人觉得只满足条件1就可以,所以IIFE是闭包;有些人觉得满足条件1和2才可以,所以被嵌套的函数才是闭包;有些人觉得3个条件都满足才可以,所以在作用域以外的地方被调用的函数才是闭包1、函数作用域链的副作用,引起闭包,闭包所保存的是整个变量对象 function foo() { var arr = []; for (var i = 0; i
2020-06-09 17:30:24 306
原创 不建议使用的with和永远不要使用的eval
with 语句用于设置代码在特定对象中的作用域。例如; var obj = { name: "obj" } var name = "window"; function func(){ var name = "func"; with(obj){ console.log(name); } }
2020-06-08 20:45:18 799
原创 Function类型(函数)
Function类型1、函数实际上是对象,函数名是指向函数对象的指针,因此函数名与其他指向该函数的变量没有什么不同。比如: function func (){ console.log("funtion"); } var func1 = func; func1(); console.log(func === func1);结果是打印“function”和“true”。即func和func1都
2020-06-04 22:45:57 2611
原创 内置构造函数的原型prototype
我们需要关注内置构造函数的prototype,1、三个包装类对象Number.prototypeNumber{0, constructor: ƒ, toExponential: ƒ, toFixed: ƒ, toPrecision: ƒ,…}String.prototypeString{"", constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ,…}Boolean.prototypeBoolean{false, constructor: ...
2020-06-04 22:15:38 183
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人