【JavaScript基础笔记】全局对象、全局函数、原型/公用属性、原型链、易错点

浏览器私有属性:

document(文档) //DOM规范,由W3C制定

alert(弹框提示)

prompt(用户填写)

comfirm(用户确认)

console(开发者打印)

 

window.setTimeout(function(){} , 3000)  //延时执行函数API

 

基本类型和对象

var a1 = 1; var a2 = new Number(1)

var b1 = 'asd'; var b2= new String('asd')

var c1 = false; var c2 = new Boolean (false)  // c2是false对象,对象中只有空对象等于false值,所以c2不等于false而等于true

var d1 = {}; var d2 = new Object()  //d1和d2都是空对象,但是不相等,因为他们在内存的地址不同

 

构造函数

  构造函数的特点:

    1:构造函数的首字母必须大写,用来区分于普通函数

    2:内部使用的this对象,来指向即将要生成的实例对象

    3:使用New来生成实例对象

 

原型 = 公用属性 = prototype

var z1 = new Object(); var z2 = new Object()    //z1 !=== z2 ,但是,z1.toString === z2.toString   因为toString是公用属性

 

__proto__ 是啥。根据定义,__proto__ 是该对象(Object)的原型(prototype)的构造函数(constructor)引用。

1 function Person(){};
2 var person1 = new Person();
3 console.log(person1.constructor === Person); //true

 

person1.constructor === Person

person1.__proto__ === Person.prototype

 

number 的公用属性有如下几种  

  • toFixed
  • toExponential
  • toString(16)  //可以加参数的toString
  • __proto__   //number.__proto__.__proto__指向object的公用属性,即:number.__proto__.__proto__ === object.__proto__  //其他基本类型同理

——————————————————

object 的公用属性包括但不限于如下几种 

  • toString
  • valueOf

——————————————————————

// Object.__proto__ === Function.prototype  //对象.__proto__ === 函数.prototype   //Object.__proto__.__proto__ 指向null

var 对象 = new 函数()
对象.__proto__ === 对象的构造函数.prototype
A instanceof B 是在 A 的原型链里查找 B 的 constructor,找到返回 true,找不到返回 false。
// 推论 var number = new Number() number.__proto__ = Number.prototype Number.__proto__ = Function.prototype
// 因为 Number 是 Function 的实例 var object = new Object() object.__proto__ = Object.prototype Object.__proto__ = Function.prototype
//因为 Object 是 Function 的实例
//Object 自身是一个构造函数。没错,是函数!函数都是继承自 Function。所以 Object instanceof Function === true。(狭义上的Object) var function = new Function() function.__proto__ = Function.prototype Function.__proto__ == Function.prototye
//因为 Function 是 Function 的实例!(前一个狭义上,后一个是广义上)
//任何一个 function(){} 都是 Function 对象的实例

Function.prototype.__proto__ === Object.prototype
//js 里面一切都是继承自 Object (除了处于原型链顶端的 null),一切都是继承自 Object 的。 
//Function 是一个对象,所以 Function instanceof Object === true。(广义上的Object)


临时对象

var n = 1

n.toString  // n 不是对象,所以没有Key,但是JS之父设计了一个临时变量temp,在使用toSring的时候即时使用

n.xxx = 2  //n不是hash但是同样不会报错,赋值是成功的,但是因为同样是使用的临时变量,这行代码结束时即刻被当做垃圾回收,无法再被第二次读取

'a'.charCodeAt(0) = 97  // 'a' 的十进制Unicode码点是97

'a'.charCodeAt(0).toString(16) = '61'  //'a' 的十进制Unicode码点是61

 

API

.trim  //去掉用户输入的多余的空格

X1.concat(X2)  //将两个字符串连起来

X1.slince(0,3)  //把字符串的第0个到第二个切割出来

x1.replace('a','b')  //把字符串里的'a'替换成'b'

 

易错题

1.toString() 结果会报错

1..toString() 结果等于 ‘1’

因为javascript引擎在解释代码时对于“1.toString()”认为“.”是浮点符号,但因小数点后面的字符是非法的,所以报语法错误;
而后面的“1..toString()和1.2.toStirng()”写法,javascript引擎认为第一个“.”小数点,的二个为属性访问语法,所以都能正确解释执行

constructor 

posted on 2018-12-19 15:21  65Seeker  阅读(154)  评论(0编辑  收藏  举报