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. EntityManager的Clear方法的使用

    在日常开发中,如果使用hibernate的话,常常会被hibernate的事务搞得焦头烂额.今天解决了之前项目中一直存在的问题,记录一下. 问题描述 有一张表TemplateCopy,如下 publi ...

  2. 微信小程序-骰子游戏2

    这是截图,类似与eclipse 的web 开发. 主界面可以自己编写程序. 可以压大压小等等,过年回家聚会的时候可以试试....

  3. 题解【AcWing272】最长公共上升子序列

    题面 一道线性 DP 好题. 设 \(dp_{i,j}\) 表示在所有 \(a_{1\dots i}\),\(b_{1\dots j}\) 的子序列中,以 \(b_j\) 结尾的最长公共上升子序列的最 ...

  4. easyui datagrid设置排序

    sortable="true" order="desc" 或者 sortable:true,order:'desc'

  5. JS 字符串 String对象

    charAt(index) 返回指定索引位置的字符 charCodeAt() 返回指定索引位置字符的 Unicode 值 indexOf(searchString, startIndex) 返回子字符 ...

  6. 服务&软件&基础设施的区别

    IT基础设施: 软件 硬件 数据库相关DBM 网络相关 networking(网络通信) 以上4个会出现的比较多 application people 上面的东西都能提供IT服务 一半的互联网公司都会 ...

  7. scala-匹配序列和元组

    scala的模式匹配极其强大,其中有一种用法是用case语句匹配序列和元组. 放码过来: def parse(x: Any): String = x match { case List(0, _, _ ...

  8. LAMP+discuz网站搭建过程

    LAMP+discuz网站的搭建 一. LAMP环境搭建 0x01下载配置虚拟机 网上下载centOS7 64的镜像,然后在vmware里面配置好,我配置的是linux终端桌面,运行快,占内存小. 0 ...

  9. [Python]pyhon去除txt文件重复行 python 2020.2.10

    代码如下: import shutil readPath='E:/word4.txt' #要处理的文件 writePath='E:/word5.txt' #要写入的文件 lines_seen=set( ...

  10. 基于 Ant Desigin 的后台管理项目打包优化实践

    背景 按照 Ant Design 官网用 React 脚手构建的后台项目,刚接手项目的时候大概30条路由左右,我的用的机子是 Mac 8G 内存,打包完成需要耗时2分钟左右,决定优化一下. 项目技术栈 ...