创建对象
prototype对象
JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。
当我们用obj.xxx
访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype
对象,最后,如果还没有找到,就只能返回undefined
//1、创建一个数组对象 var arr = [1, 2, 3]; //原型链 arr ----> Array.prototype ----> Object.prototype ----> null //2、创建一个函数 function foo() { return 0; } //函数也是一个对象,它的原型链是 foo ----> Function.prototype ----> Object.prototype ----> null
Array.prototype
定义了indexOf()
、shift()
等方法,因此你可以在所有的Array
对象上直接调用这些方法
Function.prototype
定义了apply()
等方法,因此,所有函数都可以调用apply()
方法。
如果原型链很长,那么访问一个对象的属性就会因为花更多的时间查找而变得更慢,因此要注意不要把原型链搞得太长。
构造函数
不使用new
调用一个普通函数,它返回undefined
。
使用new
调用,它就变成了一个构造函数,它绑定的this
指向新创建的对象,并默认返回this
,也就是说,不需要在最后写return this;
。
原型继承
JavaScript的原型继承实现方式就是:
-
定义新的构造函数,并在内部用
call()
调用希望“继承”的构造函数,并绑定this
; -
借助中间函数
F
实现原型链继承,最好通过封装的inherits
函数完成; -
继续在新的构造函数的原型上定义新方法。
ES6版本的类
Es5和Es6写法不一样,以下是Es6的写法
class Person{ //构造器 constructor(naem,age){...} // 方法无function关键字 method_1(){...} }
属性:实例属性(构造器中的),其他属性,静态属性(在类调用处,使用类.属性添加静态属性)
方法:实例方法,静态方法(关键字static)
继承:关键字extends
标准对象
包装对象
-
不要使用
new Number()
、new Boolean()
、new String()
创建包装对象; -
用
parseInt()
或parseFloat()
来转换任意类型到number
; -
用
String()
来转换任意类型到string
,或者直接调用某个对象的toString()
方法; -
通常不必把任意类型转换为
boolean
再判断,因为可以直接写if (myVar) {...}
; -
typeof
操作符可以判断出number
、boolean
、string
、function
和undefined
; -
判断
Array
要使用Array.isArray(arr)
; -
判断
null
请使用myVar === null
; -
判断某个全局变量是否存在用
typeof window.myVar === 'undefined'
; -
函数内部判断某个变量是否存在用
typeof myVar === 'undefined'
。
RegExp
正则对象RegExp,使用new创建正则对象,使用test()
方法测试给定的字符串是否符合条件
var re2 = new RegExp('ABC\\-001'); re2.test('010-12345');
JSON
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式
在JSON中,一共就这么几种数据类型:
-
number:和JavaScript的
number
完全一致; -
boolean:就是JavaScript的
true
或false
; -
string:就是JavaScript的
string
; -
null:就是JavaScript的
null
; -
array:就是JavaScript的
Array
表示方式——[]
; -
object:就是JavaScript的
{ ... }
表示方式。
以及上面的任意组合。
// 序列化 JSON.stringify(obj); // 反序列化 JSON.parse('{"name":"小明","age":14}')
标签:对象,JavaScript,----,面向对象,原型,new,prototype From: https://www.cnblogs.com/yjh1995/p/17523957.html