- 写 JS 的时候 经常用到
new Date()
然后才使用new Date
的方法,但是为啥数组 和字符串的方法不用new Array()
、new Object()
、new String()
,也可以直接.length
、.forEach
、.split
? - 为啥要加一些全局方法百度很多都是通过原型链
xxx.prototype.functionName
加,new Date().functionName
也可以呀?
求大佬们解惑
new Date()
然后才使用 new Date
的方法,但是为啥数组 和字符串的方法不用 new Array()
、new Object()
、new String()
,也可以直接 .length
、.forEach
、.split
?xxx.prototype.functionName
加,new Date().functionName
也可以呀?求大佬们解惑
[]
只是 new Array()
的别名
你要是想,写个简单的编译器,自定义别名也不是不可以
const compiler = code => new Function(
code
.replace(/s(\[.*])s/ig, (_, v) => `new Set(${ v })`)
.replace(/m({.*})m/ig, (_, v) => `new Map(Object.entries(${ v }))`)
).call(window)
compiler(`
console.log('new Set', s[1, 2, 3]s)
console.log('new Map', m{a: 1, b: 2}m)
`)
原型链定义的用法区别在类
和类实例
的理解上
13 回答12.9k 阅读
8 回答2.7k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2.1k 阅读
5 回答1.3k 阅读
3 回答2.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1
[]
是 Array 对象,{}
是 Object 对象,"foo"
是 String 对象。但是不通过 new Date() 没法得到一个 Date 对象。2 new Date().function 添加的只是在这个一个 Date 对象上,并不会影响其它 Date 对象。通过xx.prototype.function 会影响所有 xx 对象。