类与面向对象

 

// 创建一个类
var Student = function(name,sexy) {
    this.name = name
    this.sexy = sexy
}

// 使用new函数名(参数)初始化一个类的实例
// 此时s1是类的一个实例,引用的是一个Student类型,s1数据类型为Student类
var s1 = new Student('01', 'man')

// 可以创建多个互相独立的实例
ar s2 = new Student()
var s3 = new Student()
s2.name = '02'
s3.name = '03'

// 可以给类增加一些方法(函数)
Student.prototype.methodName = function() {
    //
}

Student.prototype.update = function(name, sexy) {
    this.name = name
    this.sexy = sexy
}
log(s2.name, s3.name)

// 实例调用方法
s1.update('06', 'woman')
// 实际上相当于
// Student.update(s1, 'xiao', 'woman')

// 封装, 把需要做的操作做好,需要用的时候可以简单调用就行,上面update 就是封装的例子

// 非封装例子
// 修改s1相关属性时如果不封装则修改属性时都需要使用点语法 s1.attributeName
// 数据量多了例如需要修改的属性多了那操作起来就很麻烦了
s1.name = '001'
s1.sexy = 'man'
// 使用了封装,则只需要调用一下这个函数就行,把需要修改的值作为参数传入函数就行
s1.update('001', 'man')

// this 代表的是函数前边那个点左边的那个东西

Student.prototype.update = function(name, sexy) {
this.name = name
this.sexy = sexy
}
var obj = new Student();

// 此时 this 代表的就是 update()函数 前边的点的左边的obj
obj.update('07', 'woman')

 

posted @ 2018-07-26 12:00  mojito1996  阅读(101)  评论(0)    收藏  举报