OS:Window 8.1

关键字:JavaScript,HTML,this,new,delete,call,apply。

1.this

一般而言,在Javascript中,this指向函数执行时的当前对象。

2.new

在JavaScript中,使用new关键字后,意味着做了如下四件事情:

  • 创建一个新的对象,这个对象的类型是object
  • 设置这个新的对象的内部、可访问性和[[prototype]]属性为构造函数(指prototype.constructor所指向的构造函数)中设置的;
  • 执行构造函数,当this关键字被提及的时候,使用新创建的对象的属性;
  • 返回新创建的对象(除非构造方法中返回的是‘无原型’)。

3.delete

delete操作符通常用来删除对象的属性,而不是一般的变量或者是函数。

4.call

应用于:Function 对象
调用一个对象的一个方法,以另一个对象替换当前对象。
call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
参数:
thisObj 
可选项。将被用作当前对象的对象。 
arg1, arg2, , argN 
可选项。将被传递方法参数序列。 
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

5.apply

call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call, apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.

Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)

6.运行调试一下JS代码,有助于对以上概念的理解。

<html>
<body><script>function Base(){this.name = 'Base';this.age = 1;this.show = function(){alert('Name:' + this.name + '\n' + 'Age:' + this.age.toString());};this.reset = function(name, age){this.name = name;this.age = age;};alert(this);}function A(){this.name = 'A';this.age = 1;}Base();var base = new Base();var isDeleted = delete base;alert('delete base: ' + isDeleted);//delete无效
        base.show();isDeleted = delete base.name;alert('delete base.name: ' + isDeleted);//delete有效
        base.show();base = new Base();var a = new A();base.show.call(a);base.show.apply(a);base.reset.call(a, 'AA', 11);base.show.call(a);base.reset.apply(a, ['AAA', 111]);base.show.apply(a);</script>
</body>
</html>

7.使用call来实现类的继承。代码如下,在类B的构造函数里面调用“Base.call(this);”,则B可以使用Base里面的方法和属性。

        function B(){Base.call(this);this.name = 'B';this.age = 2;}var b = new B();b.show();

转载于:https://www.cnblogs.com/ldlchina/p/4541726.html

JavaScript之this,new,delete,call,apply相关推荐

  1. 【转】全面理解javascript的arguments,callee,caller,call,apply概念(修改版)

    (注:在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义  2007-05-21) 在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arg ...

  2. JavaScript之call,bind,apply方法及 this 的用法辨析

    文章转自个人博客 https://knightyun.github.io/2019/05/01/js-call,转载请申明. 概述 JavaScript函数中的三个方法.call(), .apply( ...

  3. Javascript:call(),apply()和bind()

    What' s "this" 在面向对象的JS中,我们了解到在JS中,一切都是对象.因为一切都是对象,我们开始明白我们可以为函数设置和访问其他属性.而this提供了一种更优雅的方式 ...

  4. [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)

    假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...

  5. JavaScript/ES6 从this开始理解apply() call() bind()、 class 、箭头函数

    一 this 关键字 1.1 概念 this 简单来说指的是属性或方法或全局的当前对象,始终会返回一个对象. 在全局上下文的执行环境中,this的值会指向全局变量,在浏览器中则引用windows对象: ...

  6. JavaScript知识点之:delete操作符

    delete操作符来删除一个隐式声明的全局变量,也就是没有使用var定义的全局变量. 如果delete操作符删除成功, 则被delete的属性已从所属的对象上彻底消失, 随后,该对象的原型上可能存在的 ...

  7. 【转载】全面理解javascript的caller,callee,call,apply概念(修改版)

    今天写PPlayer,发现有段代码引起了我的兴趣: var Class = { create: function() { return function() { this.initialize.app ...

  8. Javascript中call函数和apply函数的使用

    Javascript 中call函数和apply的使用: Javascript中的call函数和apply函数是对执行上下文进行切换,是将一个函数从当前执行的上下文切换到另一个对象中执行,例如: so ...

  9. javascript下的arguments,caller,callee,call,apply示例及理解

    在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义.在提到上述的概念之 前,首先想说说javascript中函数的隐含参数:arguments Argument ...

  10. JavaScript -- arguments、apply 、call、bind

    前言 笔记来源:JavaScript 高级程序设计 笔记内容:apply .call.bind 相同点与不同点 运行环境:浏览器环境 arguments ECMAScript 中的参数在内部是用一个数 ...

最新文章

  1. 【Python刷题】_4
  2. Java设计模式之双向责任链COR模式
  3. 北航计算机学院毕业生2019,北航2019届本科生毕业典礼暨学位授予仪式举行
  4. Idea单测执行报错“Command line is too long“ 解决办法
  5. SAP UI5 neo-app.json
  6. 【剑指offer - C++/Java】6、旋转数组的最小数字
  7. 【软件工程】软件开发的本质
  8. java定时刷新界面_Java定时更新数据---定时器
  9. kk服务器信息及端口,kk服务器设置
  10. gnome-mplayer 挂载 srt字幕 乱码
  11. Win7如何禁用无线网卡
  12. Scipy教程 - 线性代数库scipy.linalg
  13. 概率论基础 - 6 - 切比雪夫不等式
  14. 养一只”无限猴子”帮你测试
  15. u深度制作linux启动盘制作工具,u深度u盘启动盘制作工具
  16. 520表白——送她一片星空模拟
  17. fld to xml and xml to fld
  18. [转]《英特尔多核/多线程技术》
  19. 动手学深度学习-pytorch 导入d2lzh_pytorch模块时报错 No moudel named 'd2lzh_pytorch'
  20. VS2010 Visual Assist X破解方法

热门文章

  1. 关于margin的数值是百分比,参照对象
  2. Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c(06)
  3. 如何理解和使用Java package包
  4. pio代表什么_“PIO是什么的简称?PIO”是什么的 – 手机爱问
  5. [渝粤教育] 中国地质大学 电力系统保护原理 复习题
  6. caffe cifar10 net笔记
  7. Tensorflow官方文档学习理解 (六)-TensorFlow运作方式入门
  8. pyCharm第三方库安装
  9. c++小学期大作业攻略(二)整体思路+主界面
  10. [转]——软件开发人员如何成长