为了账号安全,请及时绑定邮箱和手机立即绑定

javascript ES5 面向对象的学习总结

  1. 构造函数
    构造函数直观上讲,目的似乎应该是构造一个对象。在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人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消