JavaScript(四)面向对象
prototype对象
JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。
当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回
//1、创建一个数组对象 var arr = [1, 2, 3]; //原型链 arr ----> Array.prototype ----> Object.prototype ----> null //2、创建一个函数 function foo() { return 0; } //函数也是一个对象,它的原型链是 foo ----> Function.prototype ----> Object.prototype ----> null
Function.prototype定义了apply()等方法,因此,所有函数都可以调用apply()方法。
不使用new调用一个普通函数,它返回undefined。
使用new调用,它就变成了一个构造函数,它绑定的this指向新创建的对象,并默认返回this,也就是说,不需要在最后写return this;
JavaScript的原型继承实现方式就是:
-
定义新的构造函数,并在内部用
call()调用希望“继承”的构造函数,并绑定this; -
借助中间函数
F实现原型链继承,最好通过封装的inherits函数完成; -
class Person{ //构造器 constructor(naem,age){...} // 方法无function关键字 method_1(){...} }
方法:实例方法,静态方法(关键字static)
包装对象
-
不要使用
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是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}')

浙公网安备 33010602011771号