Skip to content

对象&原型 #38

@Leon68

Description

@Leon68

1: OOP 指什么?有哪些特性

OOP:面向对象程序设计(object-oriented programming)
特性:封装.继承.多态

image.png

  • 封装:
    封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。
    封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
  • 继承:
    面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
    通过继承创建的新类称为“子类”或“派生类”。
    被继承的类称为“基类”、“父类”或“超类”。
  • 多态:
    多态(Polymorphism)是指由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应[8]
    。例如,狗和鸡都有“叫()”这一方法,但是调用狗的“叫()”,狗会吠叫;调用鸡的“叫()”,鸡则会啼叫。 

封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
参考

2: 如何通过构造函数的方式创建一个拥有属性和方法的对象?

使用new命令
new命令原理:
1.创建一个空对象,作为将要返回的对象实例
2.将这个空对象的原型,指向构造函数的prototype属性
3.将这个空对象赋值给函数内部的this关键字
4.开始执行构造函数内部的代码
构造函数内部,this指的是一个新生成的空对象,所有针对this的操作,都会发生在这个空对象上。构造函数之所以叫“构造函数”,就是说这个函数的目的,就是操作一个空对象(即this对象),将其“构造”为需要的样子。
如果构造函数内部有return语句,而且return后面跟着一个对象,new命令会返回return语句指定的对象;否则,就会不管return语句,返回this对象。

function Person(name,age){
    this.name = name
    this.age = age
    this.sayName = function(){
        console.log('I am' + this.name)
    }
}
Person.prototype.walking = function(){
    console.log('I am walking')
}
var person = new Person('Leon','28')
person.name
person.walking()

3: prototype 是什么?有什么特性

prototype原型对象
原型对象上的所有属性和方法,都能被派生对象共享。这就是 JavaScript 继承机制的基本设计。

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('哈哈');

image.png

5: 创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus

function Car(name,color,status){
    this.name = name
    this.color = color
    this.status = status
}
Car.prototype.run = function(){
    return this.status = 'run'
}
Car.prototype.stop = function(){
    return this.status = 'stop'
}
Car.prototype.getStatus = function(){
    return this.status
}
var car = new Car('BMW','red','run')
console.log(car.getStatus())
console.log(car.stop())
console.log(car.getStatus())

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

  1. ct属性,GoTop 对应的 DOM 元素的容器
  2. target属性, GoTop 对应的 DOM 元素
  3. bindEvent 方法, 用于绑定事件
  4. createNode 方法, 用于在容器内创建节点
    代码

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions