箭头函数⾥的this是定义的时候决定的,定义的时候 getName的this指向的是window,window 没有name ,所以输出undefine
因此箭头函数不能用作构造函数,构造函数需要改变this的指向到新实例例出来的对象,this指向是定义的时候决定的
针对可迭代对象的Iterator接⼝口,通过遍历器器按顺序获取对应的值进⾏行行赋值.
Iterator是⼀一种接⼝口,为各种不不⼀一样的数据解构提供统⼀一的访问机制。任何数据解构只要有 Iterator接⼝口,就能通过遍历操作,依次按顺序处理理数据结构内所有成员。ES6中的for of的语 法相当于遍历器器,会在遍历数据结构时,⾃自动寻找Iterator接⼝口。
可迭代对象是Iterator接⼝口的实现。这是ECMAScript 2015的补充,它不不是内置或语法,⽽而仅 仅是协议。任何遵循该协议点对象都能成为可迭代对象。可迭代对象得有两个协议:可迭代协 议和迭代器器协议。
可迭代协议:对象必须实现iterator⽅方法。即对象或其原型链上必须有⼀一个名叫 Symbol.iterator的属性。该属性的值为⽆无参函数,函数返回迭代器器协
通过以上可知,自定义数据结构,只要拥有Iterator接口,并将其部署到⾃己的
Symbol.iterator属性上,就可以成为可迭代对象,能被for of循环遍历.
1.for in 与 for of
遍历数组时,key为数组下标字符串串遍历对象,key为对象字段名。
缺点:
for in 不不仅会遍历当前对象,还包括原型链上的可枚举属性
for in 不不适合遍历数组,主要应⽤用为对象
for of 仅遍历当前对象
for in 遍历的是数组索引
for of 遍历的是数组中内容
for of 可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments对象,NodeList对 象)上创建⼀一个迭代循环,调⽤用⾃自定义迭代钩⼦子,并为每个不不同属性的值执⾏行行语句句。
Object.getOwnPropertyNames
该⽅方法返回一个数组,该数组对元素是 obj⾃自身拥有的枚举或不不可枚举属性名称字符串串。
Object.create()方法创建一个新的对象,并以方法的第一个参数作为新对象的proto属性的值 (根据已有的对象作为原型,创建新的对象。) Object.create()方法还有第二个可选参数,是一个对象,对象的每个属性都会作为新对象的自身属性,对象的属性值以descriptor(Object.getOwnPropertyDescriptor(obj, ‘key’))的形式 出现,且enumerable默认为false
pre{overflow-x: auto}
一、toString方法的三个作用
1.返回一个【表示对象】的【字符串】
2.检测对象的类型
Object.prototype.toString.call(arr)==="[object Array]"3.返回该数字对应进制的字符串。
console.log(10.toString(2)) //10专为为2进制'1010'
在js中包含2进制,8进制,10进制,18进制。
二、返回一个【表示对象】的【字符串】
Object.prototype.toString()
1.toString是属于Object原型上的一个方法。
每一个对象都有一个 toString() 方法。 默认的情况下, toString()方 法被每一个对象继承。如果toString没有被定义的对象覆盖。 toString 返回 '[object type]' 其中type是对象的类型,type的值可以是Object,
代码:
class Person{ constructor(name,age){ this.name=name this.age=age } } let zs=new Person('张三',18) console.log( zs.toString() ) // [object Object]
通过上面的输出语句,我们可以确定。
返回来的确实是返回一个【表示对象】的【字符串】
三、自定义的toString()
我们也可以定义一个方法 去覆盖默认的 toString 方法。
自定义的 toString() 方法不能够传入参数,并且必须返回一个字符串。定义的toString可以返回我们任何需要的值,如果他能够附带任何有关对象的信息,他将变成非常有用
代码如下:
class Person{ constructor(name,age){ this.name=name this.age=age } // 重写Object.prototype.toString() toString(){ return `Person{name=${this.name},age=${this.age}}` } } let zs=new Person('张三',18) console.log( zs.toString() ) //Person{name=张三,age=18}
JavaScript 的许多内置对象都重写了该函数,以实现更适合自身的功能需要.
1. Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为
2. Boolean 如果布尔值是true,则返回"true"。否则返回"false""。
3. Date 返回日期的文本表示。
到此这篇关于js中 toString 方法3个作用的文章就介绍到这了,希望大家以后多多支持!