Javascript-类-模块化[面向对象已经无处不在]

Javascript是基于原型的编程语言,并不是面向对象的语言。

ES6已实现class关键字,这让js看起来更像一门面向对象的语言

主流语言类型:

  • 基于原型的语言
  • 面向过程的语言
  • 面向对象的语言
  • 函数式的语言

每一种语言的编程方式以及语法都会有所不同。

虽然Javascript并没有内置的类的实现,但可以模拟。Javascript有构造函数和new运算符,我们可以通过构造函数来实例化一个对象。

当使用new关键字来调用构造函数时,执行上下文变成一个空的上下文,这个上下文代表了新生成的实例,所以this指向当前创建的实例。

面向对象应该是现在使用最广的一种编程思想不了解的点此,需自备梯子

说到面向对象,首先让我想起的是C++,在我的印象里,C++是一门严格遵循面向对象思想的一门语言,封装、继承、多态。不仅如此,还支持多继承,这是其它很多语言没有做到的。

Javascript面向对象实现

说到面向对象,最直观的就是通过 class 关键字来声明,因为js还没实现该关键字(ES6已实现),在这里我们直接用构造函数来模拟即可。(以C++为例,在生成一个对象的时候也是去调用构造函数来创建对象的)

面向对象的三个特点:

  • 封装
  • 继承
  • 多态

创建一个Animal类

var Animal = function(){
	/*属性*/
	this.name = "animal";

	/*方法[函数、方法,在这里为什么不称为函数而称之为方法?]*/
	this.talk = function(){
		console.log("what's your name?");
	}
}

实例化对象

var Cat = new Animal;
var Dog = new Animal;

实例化一个对象时一般会需要进行初始化设置,这里可以通过构造函数传参实现

var Animal = function(name){
	/*属性*/
	this.name = name || "Animal";

	/*方法*/
	this.talk = function(){
		console.log("My name is: ", name);
	}
}

var cat = new Animal("Cat");	/*名字是Cat*/
var dog = new Animal("Dog");	/*名字是Dog*/

说明:

var name;
name = pname || "Animal";
/*与下面的功能等同*/
var name;
if(pname){
	name = pname;
}else{
	name = "Animal";
}

这是js的一种默认值设置技巧,当pname == undefined时,name赋值为 “Animal”,否则name等于pname


原文地址:点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值