javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > javascript面向对象

javascript面向对象之对象的深入理解

投稿:shichen2014

这篇文章主要介绍了javascript面向对象之对象的深入理解,将javascript面向对象程序设计中一切都视为对象,并以实例形式进一步分析了面向对象的特性,需要的朋友可以参考下

本文进一步分析讲述了javascript面向对象之对象的深入理解。分享给大家供大家参考。

1.面向对象与面向编程的比较

1.1 面向对象(oop)

面向对象的思维特点:

  1. 抽取(抽象)对象共用的属性和行为组织(封装)成一个类(模板)
  2. 对类进行实例化, 获取类的对象

1.2 面向过程(pop)

2. ES6中的类和对象

在js中,对象是一组无序的相关属性和方法的集合,万物皆对象
对象是由属性和方法组成的:

在 ES6 中新增加了类的概念,可以使用 class 关键字声明一个类,之后以这个类来实例化对象
类与对象的区别:

2.1 类的创建

语法:

class name {
// 添加属性和方法,也可以再嵌入一个类
	class age {},	
}

创建实例

let a = new name();
// 类必须使用new实例化对象

2.2 类 constructor 构造函数

constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过 new 命令生成对象实例时,自动调用该方法。如果没有显示定义, 类内部会自动给我们创建一个constructor()

语法:

class Person {
  constructor(name,age) {   // constructor 构造方法或者构造函数
      this.name = name;
      this.age = age;
    }
    sayHi() {
    console.log('我会唱歌');
    }
    // 注意,方法之间不需要加逗号。同时函数不需要加function关键字
} 

创建实例:

var ldh = new Person('刘德华', 18); 
console.log(ldh.name);
ldh.sayHi();

2.3 类的继承

实例:

class Father {
      constructor(surname) {
        this.surname= surname;
      }
      say() {
        console.log('你的姓是' + this.surname);
       }
}
class Son extends Father{  // 这样子类就继承了父类的属性和方法
}
var damao= new Son('刘');
damao.say(); 

super关键字用于访问和调用对象父类上的函数,可以调用父类的构造函数,也可以调用父类的普通函数

语法:

class Father {
            constructor(x,y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y);
            }
           say() {
               return '我是爸爸';
           }
        }
class Son extends Father{
            constructor(x,y) {
                // this.x = x;
                // this.y = y;
               super(x,y); // 调用了父类中的构造函数  ,super必须写在子类this之前调用
               // 子类在构造函数中使用super, 必须放到 this 前面  (必须先调用父类的构造方法,在使用子类构造方法)
                this.x = x;
                this.y = y;
            }
            say() {
                console.log(super.say() + '的儿子');  // 利用super调用父类的函数
            }
            substract() {
                console.log(this.x - this.y);
            }
        }
        var son = new Son(11,2);
        console.log(son);
        son.say();
        son.substract();
        son.sum(); 

2.4 注意点

补充

具体分析如下:

javacript面向对象程序设计中,可以理解为一切都是对象。

实例代码如下:

<script language="javascript" type="text/javascript">
function Cat(){
}
var cat1 = new Cat();//创建类实例
cat1.name = "小狗";
cat1.age = 4;
cat1.color="白色";
document.write(cat1.name);
document.writeln(cat1.constructor);//实例化后对象,是对象
document.writeln(typeof(cat1)+"<hr />");
document.writeln(Cat.constructor);//原型对象本身也是对象
document.writeln(typeof Cat+"<hr />");
var b="hello";//字符串也是对象
document.writeln(b.constructor);//输出它的构造函数
document.writeln(typeof b+"<hr />");
var c=123;//数值也是对象
document.writeln(c.constructor);
document.writeln(typeof c+"<hr />");
</script>

判断一个实例化对象是不是某个原型对象类型

if(cat1 instanceof Cat){//与php的判断方法相同
 window.alert("ok");
}

希望本文所述对大家的javascript程序设计有所帮助。

您可能感兴趣的文章:
阅读全文