javascript ES5 面向对象的学习总结
- 构造函数
构造函数直观上讲,目的似乎应该是构造一个对象。在JavaScript中,当使用new() 运算符时调用的那个函数就是构造函数。构造函数的目的,是用合理的默认值来初始化新创建的对象。比较好的方法是,仅仅把那些所有实例都需要的属性和方法,定义到构造函数中去。
var Car = function(){
this.running = false;
this.start = function(){
return this.running = true;
}
}
var tesla = new Car();
console.log(tesla.running);
console.log(tesla.start());
不是所有的内置函数都能在不使用 new 运算符的情况下调用。通常这是因为内置对象没有合理的默认值可以返回。调用 Date() 函数会返回一个代表当前日期时间的字符串,但调用 Math() 函数会返回一个错误。
2 实例属性
实例属性是公开的可访问的变量,用来描述对象实例的特征。
实例属性可以被定义在构造函数中,或者单独被定义成原型对象的一部分。
var Car = function(wheelCount){
this.wheels = wheelCount || 4
}
Car.prototype.odometer = 0;
var tesla = new Car();
console.log(tesla.wheels);
console.log(tesla.odometer);
3.实例方法
实例方法给对象实例提供了一些有用的功能,并且可以访问实例的属性。
两种方式定义:通过引用 this 关键字来扩展实例,或者直接在原型链上设置属性。
var Car = function(){
this.running = false;
this.start = function(){
return this.running = true;
}
}
Car.prototype.stop = function(){
return .this.running = false;
}
var tesla = new Car();
console.log(tesla.running);
console.log(tesla.start());
console.log(tesla.stop());
// 或者
function Person(name,age,job){
this.name = name;
this.age =age;
this.job = job;
this.sayName = sayName;
}
function sayName(){
alert(this.name);
}
var person1 = new Person('jack',23,'software engineer');
var person2 = new Person('mark',44,'doctor');
// 不推荐以上做法,推荐 将实例属性和实例方法 挂载在于 原型 prototype 上
4.类属性
类属性是属于类对象自己的一些变量。
它们一般用于不会改变的属性,例如常量。核心 Math 对象有一个类属性PI。
类属性可以直接在构造函数中设置。
var Cake = function(){}
Cake.isLie = true;
或者
function Cake(){}
Cake.isLie = false;
5.类方法
类方法,有时被称为静态方法,是仅仅对类对身可用的函数。
类方法,可以访问类属性,但不能访问对象实例的属性。
类方法典型的用途,是对传入参数计算后返回一个结果。
类方法和类属性用同样的方法来定义。
如果你想要给内置的 String 对象添加一个 reverse 类方法
String.reverse = function(s){
return s.split("").reverse().join("");
}
console.log(String.reverse("egassem terces"));
6.私有变量
var Car = function(){
var price = 33;
this.getPrice = function(){
return price;
}
this.setPrice = function(price){
price = price;
}
}
点击查看更多内容
2人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦