1.全局对象window
ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)
window 就是一个哈希表,有很多属性。
window 的属性就是全局变量。
a)一种是 ECMAScript 规定的
- global.parseInt
- global.parseFloat
- global.Number
- global.String
- global.Boolean
- global.Object
b)一种是浏览器自己加的属性 - window.alert
- window.prompt
- window.comfirm
- window.console.log
- window.console.dir
- window.document
- window.document.createElement
- window.document.getElementById
2.全局函数
- Number
var n = new Number(1) 创建一个 Number 对象 - String
var s = new String('hello') 创建一个 String 对象 - Boolean
var b = new Boolean(true) 创建一个 Boolean 对象 -
Object
var o1 = {}
var o2 = new Object()
o1和o2没区别
o2!===new Object(),除非地址一样;
3. Object.prototype.__ proto__
Object.prototype.__ proto__属性是一个访问器属性(一个getter函数和一个setter函数), 暴露了通过它访问的对象的内部[[Prototype]](一个对象或 [null]值)。
重要公式
var 对象=new 函数()
对象.__ proto__=函数.prototype;-
exg:
var number = new Number()
number.__ proto__ = Number.prototype
Number.__ proto__ = Function.prototype // 因为 Number 是 Function 的实例
__ proto__&&prototype
String.protype是String的公用属性的引用;(对象属性)
s.__ proto__是String的公用属性的引用;(要用的函数属性)
4.原型&&原型链
- MDN解释
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。 - 方方解释
所有对象都有 toString 和 valueOf 属性,那么我们是否有必要给每个对象一个 toString 和 valueOf 呢?
明显不需要。
JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象)
然后让每一个对象的 proto 存储这个「公用属性组成的对象」的地址。
原型就是共有属性
5.其他小知识
1.charCodeAt(x)字符编码
2.a.contact(b)连接字符串
3.a.slice(num1,num2)num1表示位置,num2表示数量;
4.a.replace('a1','a2')用a1替代字符串a的a2;
5.instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
object instanceof constructor;object要检测的对象.constructor某个构造函数
6.for...in语句以任意顺序遍历一个对象的[可枚举属性]
7.forEach() 方法对数组的每个元素执行一次提供的函数。