JS对象漫谈

  1. 如何转为number
  2. 全局对象window
  3. 详解Number
  4. parseInt 与 toString进制问题
  5. slice
  6. 5个falsy值
  7. 原型
  8. proto 和 prototype

如何转为number

  • Number(‘1’) === 1
  • parseInt(‘1’, 10) === 1
  • parseFloat(‘1.23’) === 1.23
  • ‘1’ - 0
  • +‘1’

全局对象window

  • 浏览器在加载时首先会创建window对象
  • window的属性分为两类: ECMAScript规定的和浏览器私有的(alert,prompt,confirm,console, history, document等)
  • document属于dom规范范畴 ,history属于bom规范范畴

详解Number

  • Number(‘1’) 类型转换
  • var n = new Number(1) 1 => {valueOf(): 1,..},通过valueOf获取到原始值1
  • 使用直接量赋值 var n = 1;在早期是没有toString方法的,而现在直接使用toString会临时转换为Number对象包装后的“1”然后使用toString,最后把这个包装对象丢掉(磨砂次),这就是为什么给n.xxx = 1后,然后取n.xxx是undefined的原因

parseInt 与 toString进制问题

  • parseInt第二个形参传入一个进制,代表将第一个实参是什么进制的,然后转化为10进制输出
  • toString可以传入一个参数代表将要转化的进制,把调用者转化为对应进制的字符串

slice

  • 为什么叫slice?外国人切面包叫slice,js slice可以“切”数组,字符串。

5个falsy值

  • 0
  • NaN
  • ‘’
  • null
  • undefined
  • false

所有对象都是真值

原型

var o1 = {};

o1.proto === Object.prototype

var n1 = new Number(1)

n1.proto === Number.prototype

n1.proto.proto === Object.prototype

proto 和 prototype

String.prototype是String的公用属性的引用

s.proto 也是String的公用属性的引用

var 对象 = new 函数();

对象.proto === 函数.prototype 它们的值是 [Prototype]

var obj = 函数.prototype

obj.proto === Object.prototype

var obj2 = 函数

obj2.proto === Function.prototype

Function.proto === Function.prototype

Function,prototype.proto === Object.prototype


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

×

喜欢就点赞,疼爱就打赏