JavaScript(四)

面向对象的程序设计

基本包装类型

        基本数据类型,是没有本身的自己内置的方法,但是ES中有三个特殊引用类型:Boolean、Number、String。基本包装类型和引用数据类型一样,拥有内置方法可以对数据进行操作。

Boolean:

        Boolean 类型没有特定的属性或者方法。一般直接将Boolean当做一个工具方法来使用。

Number:

        内置属性:

属性描述
MAX_VALUE可表示的最大的数。
MIN_VALUE可表示的最小的数。
NaN非数字值。
NEGATIVE_INFINITY负无穷大,溢出时返回该值。
POSITIVE_INFINITY正无穷大,溢出时返回该值。
prototype使您有能力向对象添加属性和方法。

        内置方法:

方法描述
toString把数字转换为字符串,使用指定的基数。
toLocaleString把数字转换为字符串,使用本地数字格式顺序。
toFixed把数字转换为字符串,结果的小数点后有指定位数的数字。
toExponential把对象的值转换为指数计数法。
toPrecision方法可在对象的值超出指定位数时将其转换为指数计数法。
valueOf返回一个 Number 对象的基本数字值。

String:

        对象属性:

属性描述
constructor对创建该对象的函数的引用
length字符串的长度
prototype允许您向对象添加属性和方法

        字符方法:

方法描述
charAt(index)返回指定索引位置的字符
charCodeAt(index)以Unicode编码形式返回指定索引位置的字符

        字符串操作方法:

方法描述
concat()连接字符串。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
substring()提取字符串中两个指定的索引号之间的字符。
substr()从起始索引号提取字符串中指定数目的字符。

        字符串位置方法:

方法描述
indexOf(str,n)从n开始搜索第一个str,并将搜索的索引值返回
lastIndexOf(str,n)从n开始搜索的最后一个str,并将搜索的索引值返回

        大小写转换方法:

方法描述
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。
toLocaleLowerCase()把字符串转换为小写。本地化
toLocaleUpperCase()把字符串转换为大写。本地化

        字符串的模式匹配方法:

方法描述
match()找到一个或多个正则表达式的匹配。
replace()替换与正则表达式匹配的子串。
search()检索与正则表达式相匹配的值。
split()把字符串分割为字符串数组。

深入理解对象

工厂模式:
    优点:批量创建对象 封装创建对象的函数 提高代码复用率
    缺点:无法区分创建出来的对象种类 方法冗余

//将创建对象的代码封装在一个函数中
function createPerson(name, age, gender) {
  var person = new Object();
  person.name = name;
  person.age = age;
  person.gender = gender;
  person.sayName = function () {
    console.log(this.name);
  }
  return person;
}
//利用工厂函数来创建对象
var person1 = createPerson("zhangsan", 18, 'male');
var person2 = createPerson("lisi", 20, 'female');

构造函数:构造函数函数名首字母要大写,在创建构造函数实例时候,要使用new操作符构造一个新对象

                优点:可以区分种类 
                缺点:方法还是冗余

var Person = function (name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.sayName = function () {
    console.log(this.name);
  };
}
// 作为构造函数
var person = new Person("Jacky", 29, "male");
person.sayName(); // Jacky
// 作为函数调用
Person("lisi", 27, "female"); // 添加到全局对象 node global 浏览器 window
global.sayName(); // lisi
// 在另一个对象的作用域中调用
var o = new Object();
Person.call(o, "wangwu", 25, "male");
o.sayName(); // wangwu

原型模式:通过调用构造函数创建的对象的原型

                优点:将所有的属性和方法都放到原型对象中
                缺点:不单独使用

function Person() {}
Person.prototype = {
  constructor: Person,
  name: "zhangsan",
  age: 29,
  gender: "male",
  sayName() {
    console.log(this.name);
  }
};

var person1 = new Person()

组合模式:构造函数模式+原型模式

                构造函数中放实例私有的属性,
                构造函数原型对象中放共有属性和方法

function Person(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
  this.firends = ['zhangsan', 'lisi'];
}
Person.prototype = {
  constructor: Person,
  sayName: function () {
    console.log(this.name);
  }
};
var p1 = new Person('larry', 44, 'male');
var p2 = new Person('terry', 39, 'male');

p1.firends.push('robin');
console.log(p1.firends); // [ 'zhangsan', 'lisi', 'robin' ]
console.log(p2.firends); // [ 'zhangsan', 'lisi' ]
console.log(p1.firends === p2.firends); // false
console.log(p1.sayName === p2.sayName); // true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值