面向对象编程(Object Oriented Programming),是软件开发过程的主要方法之一。在OOP中,使用对象和类组织代码来描述事物及其功能。
虽然点符号是访问对象属性的有效方法(如myobj.name),但存在一个缺陷,如果变量名(如myobj)更改,则引用原始名称的任何代码都需要更新。如果一个对象对其属性有许多引用,则大概率会出错。这时,使用this关键字可以很好地避免这样的问题。
let duck = { name: "Aflac", numLegs: 2, //sayName: function() {return "The name of this duck is " + duck.name + "."; //改用下面这句: sayName: function() {return "The name of this duck is " + this.name + ".";} };
在当前上下文中,this是指方法关联的对象:duck。如果对象的名称更改为mallard,无需在代码中找到所有duck改为mallard程序也能正常运行,this使代码可重用、易于阅读。
构造函数是创建新对象的函数。它定义属于新对象的属性和行为。
编写构造函数要遵循一些约定:
1)构造函数是用首字母大写的名称定义的,以区别于非构造函数的其他函数。
2)构造函数使用关键字this设置要创建的对象的属性。构造函数中的“this”总是指正在创建的对象。
3)构造函数定义属性和行为,而不是像其他函数那样返回值。
使用new运算符调用构造函数(如下所示),' new '告诉JavaScript创建一个名为blueBird的新Bird实例。如果没有new操作符,构造函数中的这一操作将不会指向新创建的对象,从而产生意外的结果。现在,blueBird拥有Bird构造函数中定义的所有属性。与任何其他对象一样,可以访问和修改blueBird的属性。
function Bird() { this.name = "Albert"; this.color = "blue"; this.numLegs = 2; } let blueBird = new Bird();
让构造函数接受参数会更灵活:
function Dog(name,color) { this.name=name; this.color=color; this.numLegs=4; } let terrier=new Dog('haha','yellow') console.log(terrier); //{ name: 'haha', color: 'yellow', numLegs: 4 }
现在可以在创建每个Dog时为其定义属性,这是JavaScript构造函数非常有用的一种方式,基于共享的特征和行为将对象组合在一起,并定义一个自动创建它们的蓝图。
每当构造函数创建一个新对象时,该对象就称为其构造函数的实例。JavaScript提供了一种使用instanceof操作符验证这一点的便捷方法。instanceof允许您将对象与构造函数进行比较,根据该对象是否是使用某构造函数创建的,返回true或false。例子:
function House(numBedrooms) { this.numBedrooms = numBedrooms; } let myHouse=new House(99); console.log(myHouse instanceof House); //true
当
当
标签:name,对象,JS,面向对象编程,duck,new,属性,构造函数 From: https://www.cnblogs.com/168-h/p/16739337.html