JavaScript for Kids 学习笔记11. 面向对象

1. 一个简单的 Object

var dog = {
    name: "Pancake",
    legs: 4,
    isAwesome: true
};
dog.name;
dog.age = 6;

2. 给Object添加成员函数

dog.bark = function() {
    console.log("Woof woof! My name is " + this.name + "!");
};

dog.bark();   // 调用一下试试

this.name    // this , 表示自己.   this.name 就是 “自己的名字”

3. 在多个Object之间共享一个成员函数

var speak = function () {
    console.log(this.sound + "! My name is " + this.name + "!");
};

var cat = {
    sound: "Miaow",
    name: "Mittens",
    speak: speak
};

var pig = {
    sound: "Oink",
    name: "Charlie",
    speak: speak
};

var horse = {
    sound: "Neigh",
    name: "Marie",
    speak: speak
};

4. 构造函数

var Car = function (x, y) {
    this.x = x;
    this.y = y;
};

var tesla = new Car(10, 20);
console.log(tesla);

var nissan = new Car(100, 200);
console.log(nissan);

这里的Car就是一个function,真的。虽然从名字来看,它更像其他语言中的 class,但它依然只是一个function。在调用这个函数时,前面加个new,就生成了一个Object。

下面是在Chome控制台的显示结果。 注意 Object.getPrototypeOf( ) 这个函数。

我们随便写个函数,在调用时前面加个new,都会生成一个Object。如下图所示:

5. 在html上显示一辆小汽车


var drawCar = function (car) {
    var carHtml = '<img src="img/car.png">';
    var carElement = $(carHtml);   // jQuery, 用html代码生成一个DOM元素
    carElement.css({               // jQuery函数 css( ),设置css
        position: "absolute",
        left: car.x,
        top: car.y
    });

    $("body").append(carElement);   // jQuery函数 append( ), 追加一个子节点
};

drawCar(tesla);
drawCar(nissan);

6. 把上面的drawCar函数变成Car的成员函数

Car.prototype.draw = function () {
     var carHtml = '<img src="img/car.png">';
     this.carElement = $(carHtml);
     this.carElement.css({
         position: "absolute",
         left: this.x,
         top: this.y
     });
     $("body").append(this.carElement);
 };

 var tesla = new Car(20, 20);
 var nissan = new Car(100, 200);
 tesla.draw();
 nissan.draw();
Car.prototype.draw 注意这里的 prototype , 这是添加成员函数的方法。

7. 添加一个moveRight成员函数

Car.prototype.moveRight = function () {
    this.x += 5;
    this.carElement.css({
        left: this.x,
        top: this.y
    });
};
    
tesla.moveRight();
nissan.moveRight();

8. 添加动画,小汽车动起来

setInterval(function(){
        tesla.moveRight(10);
    }, 
    1000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值