JavaScript(四)面向对象

创建对象

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的原型继承实现方式就是:

  1. 定义新的构造函数,并在内部用call()调用希望“继承”的构造函数,并绑定this

  2. 借助中间函数F实现原型链继承,最好通过封装的inherits函数完成;

  3. 继续在新的构造函数的原型上定义新方法。

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操作符可以判断出numberbooleanstringfunctionundefined

  • 判断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的truefalse

  • string:就是JavaScript的string

  • null:就是JavaScript的null

  • array:就是JavaScript的Array表示方式——[]

  • object:就是JavaScript的{ ... }表示方式。

以及上面的任意组合。

// 序列化
JSON.stringify(obj);
// 反序列化
JSON.parse('{"name":"小明","age":14}')

 

posted @ 2023-07-03 20:25  huiyii  阅读(6)  评论(0编辑  收藏  举报