js中的函数定义之后,函数名就是这个函数(JS中函数其实也是对象)的地址(句柄)

js读取函数内存地址:

首先想读内存地址只有C或者C++,汇编抛开不谈,其他高级语言一般都封装起来了,不过我也不能确定所有的,接触有限。下面仅供参考,只是一些理论,没有实践过。js去向后台请求读内存,后台代码利用api访问得到相关内存的指针,取出地址来返回给前端。。

变量对象(vo)
在一些js 引擎的实现中 vo是用__parent__ 属性来表示的。我们甚至能够 访问到它 并且改变它。
变量对象(vo):变量对象是上下文里面的一个隐藏对象。保存着我们定义的数据,变量对象包括3个内容:
1.声明的变量
2.声明的方法
3.函数的形参
只有在全局上下文中 我们才可以通过vo直接访问变量。因为这时候vo就是 global 本身。而在其他上下文我们是访问不到vo的。vo只是内部实现。我们定义的变量、方法都是vo的属性。

在全局上下文中 ,vo===this===global
在函数上下文中,我们在进入函数上下文的时候创建vo,这时候称呼他为ao(activation object)。在刚进入这个上下文的时候 ao 就有了属性。就是 arguments。然后 会扫描 变量声明 和函数声明。扫描优先级为(主要指同名的时候 覆盖问题):函数>参数>变量。

function test(x){
alert(x);
function x(){
}
}
test(1);

  

function test(x,y,z){
console.log(arguments)
}
test(1,2);

arguments 主要有下面几个属性组成。
callee 调用的函数本身
 length 参数长度。(这里需要注意 这个长度 是参数的真实长度 看上面的例子 为2.) 
properties-indexes 就是参数 数组。 里面的个数 是和上面的length 一致的。 并且和传递进来的参数指向同一地址。这里需要注意的是 比如上面的例子 arguments[0]和x是共享的。arguments[1]和y是共享的。但是 arguments [2]和 y却不是共享的。
————————————————

this

    解析器在调用函数每次都会向函数内部传递进一个隐含的参数,
    这个隐含的参数就是this,this指向的是一个对象,
    这个对象我们称为函数执行的上下文对象,
    根据函数的调用方式的不同,this会指向不同的对象
    1.以函数的形式调用时,this永远都是window
    2.以方法的形式调用时,this就是调用方法的那个对象
隐式调用
        1. 以函数的形式调用时,this永远都是window
var b="global"
function baz(){
var b="baz"
console.log(this.b)
bb()
}
var bb=function(){
console.log(this.b)
}
baz()
console.log(window.b)

  

 

显示调用

    "use strict"
// 2.以方法的形式调用时,this就是调用方法的那个对象
var name="global"
var func=function(){
console.log(this.name)
}
var obj1={
name:"hello",
fun:func
} var obj2={
name:"world",
fun:func }
obj1.fun() //hello
obj2.fun() //world
console.log(window.name) //global

  

    <script>
var x = 'global'
function testThis () {
// this.x = 'fuck';
// console.log(this)
console.log(this.x)
}
function innerObj () {
this.x = 'inner';
testThis();
this.innerTestThis = testThis;
this.innerTestThis();
} function wrapObj () {
this.x = 'wrap';
// var test = new testThis();
// console.log(test.x)
testThis(); this.wrapTestThis = testThis;
this.wrapTestThis(); this.innerTestThis = new innerObj();
}
var wrap = new wrapObj();
wrapObj();
</script>

  

随笔js的更多相关文章

  1. 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

    JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...

  2. html回顾随笔JS(*^__^*)

    ---恢复内容开始--- map遍历 function b(){ var week = new Map(); week.set("Mon","星期一"); we ...

  3. JS调用PageMethods

    http://www.cnblogs.com/Ren_Lei/archive/2010/07/14/1777413.html JS调用PageMethods 操作步骤: 1.新建一个WebApplic ...

  4. jquery的.get方法说解

    ·Customer类 public class Customer { public int Unid { get; set; } public string CustomerName { get; s ...

  5. MVC学习随笔----如何在页面中添加JS和CSS文件

    http://blog.csdn.net/xxjoy_777/article/details/39050011 1.如何在页面中添加Js和CSS文件. 我们只需要在模板页中添加JS和CSS文件,然后子 ...

  6. js随笔

    在js中,一个[]认为是数组:{}认为是Json对象:

  7. Vue.JS入门学习随笔

    PS:先说说学习Vue的缘由吧,学习完了React之后,突然发现又出了一款叫做vue的框架,而且据说可以引领又一波新框架的潮流,我容易吗我!!!   Vue.js(读音 /vjuː/, 类似于view ...

  8. 【随笔】js加载

    有时候,当发现js操作一个dom的时候,发现dom没有找到,这是由于html没有加载完就开始操作该dom的缘故,所以需要在html文档加载完后再加载js,于是我们可以这么做: js方法:window. ...

  9. ❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️html,js随笔。❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

    a标签本身的文字居中. a{ display:block; text-align:center; } 设置div1在另一个div2里居中,(写了左边margin 就别写右边了不然ie6有毛病,当然本身 ...

随机推荐

  1. JavaDay10(上)

    Java learning_Day10(上) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA&g ...

  2. 工控安全-PLC指纹提取的几种方法

    前言:PLC为可编程逻辑控制器,采用S7协议.其硬件本身存在许多漏洞,可以利用kali里面的漏洞模块或者modbus工具对其进行攻击,甚至直接可以进行未授权访问,只要其开启对外网的端口服务,那么我们就 ...

  3. Python函数装饰器

    装饰器的原则 1)不修改被修饰函数的源代码: 2)不修改被修饰函数的调用方式: 装饰器的知识点 = 高阶函数 + 函数嵌套 + 闭包 1. 只用高阶函数写装饰器--->有瑕疵 import ti ...

  4. Hibernate + mysql 配置

    1.生成po的配置 2.连接 MySQL 数据库的配合

  5. 微信小程序报错TypeError: this.setData is not a function

    今天在练习小程序的时候,遇到小程序报错 对于处于小白阶段的我,遇到这种报错,真还不知道是错从何来,只有一脸蒙逼,后来通过查询,终于知道了问题所在,下面对这一问题做一记录 小程序默认中是这么写的 onL ...

  6. 51nod1326 遥远的旅途(spfa+dp)

    题意: 给出一个无向图,问从1到n是否存在一条长度为L的路径. n,m<=50,1<=路径长度<=10000,L<=10^18 思路: 改变一下思路,我们发现,假设从起点1走到 ...

  7. int long的数据范围

    java 整数型 byte 1字节   -128~127  -2^7~2^7-1 short 2字节 -32768~32767 int  4个字节 -2147483648~2147483647  -2 ...

  8. 【巨杉数据库SequoiaDB】巨杉数据库荣获《金融电子化》“金融科技创新奖”

    巨杉助力金融科技创新 2019年12月19日,由<金融电子化>杂志社主办.北京金融科技产业联盟协办的“2019中国金融科技年会暨第十届金融科技及服务优秀创新奖颁奖典礼”在京成功召开.来自金 ...

  9. 小程序 与 App 与 H5 之间的区别

    小程序的实现原理 根据微信官方的说明,微信小程序的运行环境有 3 个平台,iOS 的 WebKit(苹果开源的浏览器内核),Android 的 X5 (QQ 浏览器内核),开发时用的 nw.js(C+ ...

  10. C++中多态实现的关键——虚函数

    1.多态的作用 在面向对象程序设计中,使用多态能够增强代码的可扩充性,,即程序需要增加或修改部分功能时,只需修改少量代码就能够达到目的,此外多态也能起到精简代码的作用. 而实现多态的关键点,就是虚函数 ...