JS对象
对象可理解为我们生活中的对象,你有对象吗,没有可以创建一个,她有名字,年龄,外观的特点,即属性;也有一些特长,即方法。
实际对象是一组没有特定顺序的值,每个属性和方法都有一个名字,每个名字都和一个值一一对应。
根据面向对象设计,我们可以创建任意多个具有相同属性和方法的对象。
学对象的重要意义是封装一些数据以作他用。
对象的特点
- 封装
- 继承
- 多态
- 具有特征和行为
对象的创建方式
对象字面量的方式(推荐)
<script>
var obj = {
name: "mark",
age: 23,
sex: "男",
sayHi: function () {
console.log("大家好,我是" + this.name);
}
};
console.log(obj.name);
obj.sayHi();
</script>
其中name、age、sex就是属性,sayHi是方法;
属性的增、删、改、查
- 增 obj.wife = "xiao";
- 改 obj.name = "xiao";
- 删 delete obj.name
- 查 obj.name
工厂模式
<script>
//创建多个对象
function creatStudent(name,age,sex,score) {
var student = new Object();
//对象的属性
student.name = name;
student.age = age;
student.sex = sex;
student.score = score;
//对象的方法
student.sayHi = function () {
console.log("大家好,我是" + this.name);
};
//返回对象
return student;
}
var s1 = creatStudent("niefeng",12,"男",36);
var s2 = creatStudent("wjg",12,"男",36);
var s3 = creatStudent("zdy",12,"男",36);
</script>
构造函数(推荐)
构造函数和普通函数一模一样,只不过加new就会生成对象。
注意:构造函数命名最好采用大驼峰命名规则(第一个字母大写),为了好区分。
使用构造函数的主要问题是每个方法都会在实例上重新创建一遍。
<script>
//对象的属性 是一个变量
function Student(name,age,sex,score) {
this.name = name;
this.age = age;
this.sex = sex;
this.score = score;
//对象的方法
this.sayHi = function () {
console.log("大家好,我是" + this.name);
};
}
// 内存开辟空间,存储新创建的对象
// 会把this设置为当前对象
// 执行函数内部的代码,设置对象的属性和方法
// 返回新创建的对象
var s1 = new Student("niefeng",12,"男",36);
var s2 = new Student("nifeng",12,"男",36);
var s3 = new Student("nieng",12,"男",36);
</script>
原型模式
- 原型定义了构造函数对象的公共祖先,在函数出生的时候就已经定义好了的东西;
- 原型也是对象;
- 一个正常的对象应该是有自己的对象属性和方法,还有原型继承的属性和方法。
<script>
function Person() {
}
Person.prototype.name = "mark";
Person.prototype.age = 21;
Person.prototype.job = "前端";
Person.prototype.sayHi = function () {
console.log("大家好,我是" + this.name);
};
var person1 = new Person();
</script>
除了以上方法外还有些拓展和组合的创建方法:
- 动态原型模式
- 寄生构造函数模式
- 稳妥构造函数
包装类
三个特殊的引用类型:
Boolean, Number, String
在js中,这几个基本类型都是有方法的。但是矛盾的是,Boolean, Number, String是基本类型不是对象,逻辑上应该是不能有方法的。
实际上是因为访问的时候,后台做了一些隐式的处理:
- 创建Boolean, Number, String类型的一个实例;
- 在实例上调用指定方法;
- 销毁这个实例。
引用类型和基本包装的主要区别就是对象的生存期。基本包装类型只在内存中存在一瞬间。
<script>
var num = 2;
num.len = 3;
// new Number(2).len = 3; //立即就销毁了
// new Number(2).len;
console.log(num.len); // undefined
</script>
每个基本包装类型都是提供了许多便捷的方法。
Boolean类型
-
valueOf( )
Number类型
- valueOf( ):返回对象表示的基本类型的值
- toLocaleString():返回数值的字符串
- toString():返回数值的字符串
- toFixed():按照指定的小数位返回数值的字符串表示
- toExponential():指数表示法
- toPrecision():返回固定大小格式或指数格式
String类型
1、字符方法
- charAt()
- charCodeAt()
2、字符串操作方法:
- concat()
- slice()
- substr()
- substring()
3、字符串位置方法:
- indexOf():向后搜索
- lastIndexOf():向前搜索
4、trim():删除前后的空格
5、字符串大小写转换:
- toLowerCase()
- toLocaleLowerCase()
- toUpperCase()
- toLocaleUpperCase()
6、字符串的模式匹配方法
- search()
- match()
- replace()
7、localeCompare()
8、fromCharCode()