javascript function new this
1. 首先,我们这里把function直接调用时将这个function当做方法来看待,而new function是将function当做类来看待
2. 当把function作为类来使用时,function中的this下的变量都会变成实例化对象的可访问属性,例如function A(){this.x = 1;},则var a = new A();后相当于得到var a = {x:1};this指向这里类生成的对象本身,this.x就相当于将x这个属性暴露出去,而原本function中没有this的都可以看做是私有变量,不能直接访问。
3. function当做方法来看时,即不new,则调用方法时的this指的是这个文件,我们称为文件对象(函数被执行后,文件对象会增加相应属性)。只有return的东西是可以被外部访问的,内部的数据则是被隐蔽的。
4. 对于继承,js中使用prototype来指定类型的原型,即function的原型对象。对于function当做方法来使用则需要将一些需要用到的原型的方法包在返回变量里。而当做类来使用则可以直接用.的形式来访问属性。从这点来说function当做类来表现面向对象的思想用起来要方便的多。
所以综上,如果是严格按照面向对象思想来设计程序,并且牵涉到继承或者大量的对象创建,则需要用到prototype,推荐将function当做类来使用。
ps:其实js的随意有时候是好处,有时候也不好,使用起来会混乱。所以例如function如果当做类时就不要写return了,而如果当做function来用,不要用this(从公有变量角度来说,呈现的效果是一样的,语法上不会有什么问题,但混起来使用会导致程序变得很乱)。
javascript function new this的更多相关文章
- href="javascript:function()" 和onclick的区别
href='javascript:function()'和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:fun ...
- 关于<a href='javascript:function()'>
<a href='javascript:function()'> 这样写是为了让这个链接不要链接到新页面转而执行一段js代码.和onclick能起到同样的效果,一般来说,如果要调用脚本还是 ...
- javascript function对象
<html> <body> <script type="text/javascript"> Function.prototype.get_my_ ...
- Understanding JavaScript Function Invocation and "this"
Understanding JavaScript Function Invocation and "this" 11 Aug 2011 Over the years, I've s ...
- JavaScript function函数种类(转)
转自:http://www.cnblogs.com/polk6/p/3284839.html JavaScript function函数种类 本篇主要介绍普通函数.匿名函数.闭包函数 目录 1. 普通 ...
- JavaScript function函数种类介绍
JavaScript function函数种类介绍 本篇主要介绍普通函数.匿名函数.闭包函数 1.普通函数介绍 1.1 示例 ? 1 2 3 function ShowName(name) { ...
- 【转】onclick事件与href='javascript:function()'的区别
href='javascript:function()'和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:fun ...
- javascript:function 函数声明和函数表达式 详解
函数声明(缩写为FD)是这样一种函数: 有一个特定的名称 在源码中的位置:要么处于程序级(Program level),要么处于其它函数的主体(FunctionBody)中 在进入上下文阶段创建 影响 ...
- [Javascript] Convert a Callback-Based JavaScript Function to a Promise-Based One
Sometimes, you might want to convert a JavaScript function that accepts a callback to one that retur ...
- [Rust] Pass a JavaScript Function to WebAssembly and Invoke it from Rust
In some cases it’s useful to be able to invoke a JavaScript function inside Rust. This session showc ...
随机推荐
- 通知(NSNotificationCenter)
// 监听加载更多的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadMoreDeals ...
- 制作一个属于自己的BHO吧!(C#) (转)
摘自:http://tech.ddvip.com/2013-05/1369758775196257.html BHO(Browser Helper Object)是插件,它寄存在IE浏览器中运行.在咱 ...
- jQuery的domReady
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- intanceof以及引出的__proto__和prototype
instanceof运算代码 function instance_of(L, R) { //L 表示左表达式,R 表示右表达式 var O = R.prototype; // 取 R 的显示原型 L ...
- Android 使用finalBitmap实现缓存读取
public class NewsApplication extends Application{ private FinalBitmap finalBitmap=null; public Final ...
- iOS - Swift NSLocale 本地化信息
前言 public class NSLocale : NSObject, NSCopying, NSSecureCoding NSLocale 类返回本地化信息,主要体现在"语言" ...
- JAVA 大数据内存耗用测试
JAVA 大数据内存耗用测试import java.lang.management.ManagementFactory;import java.lang.management.MemoryMXBean ...
- [转发] 理解 oauth 2.0
原文: http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html oauth 的各种编程语言实现: http://oauth.net/2/ 理解OAu ...
- [转载] 数据库分析手记 —— InnoDB锁机制分析
作者:倪煜 InnoDB锁机制常常困扰大家,不同的条件下往往表现出不同的锁竞争,在实际工作中经常要分析各种锁超时.死锁的问题.本文通过不同条件下的实验,利用InnoDB系统给出的各种信息,分析了锁的工 ...
- [转载] 理解 rto
原文: http://mp.weixin.qq.com/s?__biz=MzAxNjM3MDkyOQ==&mid=204656491&idx=1&sn=5046aa16eee0 ...