高级1 - 对象_原型

问答

问题1 OOP 指什么?有哪些特性 (难度: ***)

  • OOP指:Object Oriented Programming,面向对象编程,
  • 有三个主要特征:数据封装、继承、多态

问题2 如何通过构造函数的方式创建一个拥有属性和方法的对象? (难度: ***)

  • 属性可以通过this.xxx = xxx的方式直接赋值,方法可以通过`this.protoType.xxx = function(){},的方式创建。如下例子:
function Car(name){
    //  创建属性
    this.name = name;
    // 创建方法
    this.protoType.run = function(){
        // some code
    }
}

问题3 prototype 是什么?有什么特性 (难度: ***)

  • JavaScript的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。只有null除外,它没有自己的原型对象。
  • 原型对象上的所有属性和方法,都能被派生对象共享。
  • 通过构造函数生成实例对象时,会自动为实例对象分配原型对象。每一个构造函数都有一个prototype 属性,这个属性就是实例对象的原型对象。
  • prototype里的属性一旦更改,其实例内也将发生变化

问题4 画出如下代码的原型图 (难度: ****)

function People (name){
  this.name = name;
  this.sayName = function(){
    console.log('my name is:' + this.name);
  }
}

People.prototype.walk = function(){
  console.log(this.name + ' is walking');  
}

var p1 = new People('饥人谷');
var p2 = new People('前端');

原型图如下:

原型图.png

问题4 以下代码中的变量age有什么区别(难度: ****)

function People (){
  var age = 1       //  这里的age是People()函数里的私有变量
  this.age = 10;    //  这里的age是People作为构造函数时,其实例所具有的属性
}
People.age = 20;   //  函数也是对象,这里是People函数的属性

People.prototype.age = 30;   //  People的原型对象的属性

问题5 创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus (难度: ****)

  • 创建如下Car对象
function Car(name, color, status) {
    this.name = name;
    this.color = color;
    this.status = status;
    this.run = function(){
        this.status = "run"
    };
    this.stop = function(){
        this.status = "stop"
    };
    this.getStatus = function(){
        console.log(this.status);
    };
}
car1 = new Car("Tesla", "red", "run");
  • 在浏览器中演示:
Car.png

问题6 创建一个 GoTop 对象,当 new 一个 GotTop 对象则会在页面上创建一个回到顶部的元素,点击页面滚动到顶部。拥有以下属性和方法 (难度: ****)

展示代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容