博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中基础this的解释
阅读量:6455 次
发布时间:2019-06-23

本文共 1295 字,大约阅读时间需要 4 分钟。

hot3.png

在javascript中this是强大,依据不同的上下文,this的内涵也是不一样的。下面有俩段关于继承的写法

function Person(name){	this.name=name;	this.sayHello=function(){		console.info("I’m "+ this.name);	}}function Employee(name,salary){	Person.call(this, name);	this.salary=salary;	this.showMeSalary=function(){		console.info(this.name+"hai $:"+this.salary);	}}var bill=new Person("bill");var tom=new Employee("tom",5000);bill.sayHello();tom.sayHello();console.info(bill.sayHello==tom.sayHello);//=>false

方法由不同的对象调用,this的内容就会产生变化,而通过上面这种方法构造出来的对象每个this都含有一份自己的代码,

console.info(bill.sayHello==tom.sayHello);//=>false

而同一类对象却包含有相同的代码,这是一种浪费。

较为好的做法就是将可能重复利用的函数剥离出来。

function Person(name){//定义了基类构造函数	this.name=name;}Person.prototype.sayHello=function(){	alert("I'm "+this.name);}function Employee(name,salary){	Person.call(this, name);//调用基类构造函数	//Person.call(this, this.name);//调用基类构造函数这样是错误的,this.name从来没有被复制	this.salary=salary;}//这才是我熟悉的类似静态语言的继承Employee.prototype=new Person();//创建了一个基类对象作为子类原型的原型(原型继承)								Employee.prototype.showMeSalary=function(){	alert(this.name+" has $:"+this.salary);}var bill=new Person("bill");var tom=new Employee("tom",5000);bill.sayHello();tom.sayHello();console.info(bill.sayHello==tom.sayHello);//true

总结:javascript中的this是静态语言中的类同时也是对象,这也符合javascript中类和对象同体的观念

转载于:https://my.oschina.net/osenlin/blog/286060

你可能感兴趣的文章
Python背景色与语法高亮主题配置
查看>>
C#实现对指定文件夹中文件按修改时间排序
查看>>
mybati之运行过程
查看>>
java 采用MD5加密解密
查看>>
java系统库性能优化注意点
查看>>
在页面的el表达式是如何判断null的
查看>>
【应用笔记】【AN005】Qt开发环境下基于RS485的4-20mA电流采集
查看>>
IDEA基于maven整合SSM
查看>>
python 信息同时输出到控制台与文件
查看>>
WPF中的动画——(六)演示图板
查看>>
访问禁止,检测到可疑访问,事件编号
查看>>
C# websocket与html js实现文件发送与接收处理
查看>>
CSS浮动与清除浮动
查看>>
Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别
查看>>
[VSTO系列]一、VSTO For Excel Getting Start!
查看>>
learning c book
查看>>
R语言矩阵转置
查看>>
Maven下,spring+struts2+ibatis整合
查看>>
left join
查看>>
树形DP题目
查看>>