当前位置: 首页 > news >正文

网站建设设计策划dw中怎样做网站链接

网站建设设计策划,dw中怎样做网站链接,电子商务网站cms,做网站空间会招攻击一、问题的由来 学懂 JavaScript 语言#xff0c;一个标志就是理解下面两种写法#xff0c;可能有不一样的结果。 var obj {foo: function () {} };var foo obj.foo;// 写法一 obj.foo()// 写法二 foo()上面代码中#xff0c;虽然obj.foo和foo指向同一个函数#xff0c;…一、问题的由来 学懂 JavaScript 语言一个标志就是理解下面两种写法可能有不一样的结果。 var obj {foo: function () {} };var foo obj.foo;// 写法一 obj.foo()// 写法二 foo()上面代码中虽然obj.foo和foo指向同一个函数但是执行结果可能不一样。请看下面的例子。 var obj {foo: function () { console.log(this.bar) },bar: 1 };var foo obj.foo; var bar 2;obj.foo() // 1 foo() // 2这种差异的原因就在于函数体内部使用了this关键字。很多教科书会告诉你this指的是函数运行时所在的环境。对于obj.foo()来说foo运行在obj环境所以this指向obj对于foo()来说foo运行在全局环境所以this指向全局环境。所以两者的运行结果不一样。 这种解释没错但是教科书往往不告诉你为什么会这样也就是说函数的运行环境到底是怎么决定的举例来说为什么obj.foo()就是在obj环境执行而一旦var foo obj.foofoo()就变成在全局环境执行 本文就来解释 JavaScript 这样处理的原理。理解了这一点你就会彻底理解this的作用。 二、内存的数据结构 JavaScript 语言之所以有this的设计跟内存里面的数据结构有关系。 var obj { foo: 5 };上面的代码将一个对象赋值给变量obj。JavaScript 引擎会先在内存里面生成一个对象{ foo: 5 }然后把这个对象的内存地址赋值给变量obj。 也就是说变量obj是一个地址reference。后面如果要读取obj.foo引擎先从obj拿到内存地址然后再从该地址读出原始的对象返回它的foo属性。 原始的对象以字典结构保存每一个属性名都对应一个属性描述对象。举例来说上面例子的foo属性实际上是以下面的形式保存的。 {foo: {[[value]]: 5[[writable]]: true[[enumerable]]: true[[configurable]]: true} }注意foo属性的值保存在属性描述对象的value属性里面。 三、函数 这样的结构是很清晰的问题在于属性的值可能是一个函数。 var obj { foo: function () {} };这时引擎会将函数单独保存在内存中然后再将函数的地址赋值给foo属性的value属性。 {foo: {[[value]]: 函数的地址...} }由于函数是一个单独的值所以它可以在不同的环境上下文执行。 var f function () {}; var obj { f: f };// 单独执行 f()// obj 环境执行 obj.f()四、环境变量 JavaScript 允许在函数体内部引用当前环境的其他变量。 var f function () {console.log(x); };上面代码中函数体里面使用了变量x。该变量由运行环境提供。 现在问题就来了由于函数可以在不同的运行环境执行所以需要有一种机制能够在函数体内部获得当前的运行环境context。所以this就出现了它的设计目的就是在函数体内部指代函数当前的运行环境。 var f function () {console.log(this.x); }上面代码中函数体里面的this.x就是指当前运行环境的x。 var f function () {console.log(this.x); }var x 1; var obj {f: f,x: 2, };// 单独执行 f() // 1// obj 环境执行 obj.f() // 2上面代码中函数f在全局环境执行this.x指向全局环境的x。 在obj环境执行this.x指向obj.x。 回到本文开头提出的问题obj.foo()是通过obj找到foo所以就是在obj环境执行。一旦var foo obj.foo变量foo就直接指向函数本身所以foo()就变成在全局环境执行。 总结 this是用于在函数体内部指代函数当前的运行环境。
http://www.sadfv.cn/news/68609/

相关文章:

  • dedecms 旅游网站模板下载开网站平台需要多少钱
  • 博客网站seo交互设计好的网站
  • 网上做兼职的网站有哪些工作网页设计与制作思考建议200字
  • 重庆市建设工程安全管理网站天津电子商务网站建设
  • 做优化网站能以量取胜么海外短视频软件app下载安装
  • 查询网站开发语言排网站制作公司知道万维科技
  • wordpress建站图片效果做网站是怎么赚钱
  • 滨海做网站的价格星辰wordpress
  • 学做网站论坛vip共享深圳vi设计平台
  • 网站 建设 内容科技公司介绍
  • 浪潮云网站建设自己申请一个网站怎么做
  • 深圳龙华新区住房和建设局网站海外网络服务器官网
  • 密云建设银行招聘网站自主建站网站平台
  • 免费传奇网站免费传奇外网wordpress好慢
  • 怎么成立自己的网站青岛网站建设报价
  • 百度收录比较好的网站it运维服务商
  • 我们网站的优势教人做饮料的网站
  • 荔浦网站开发wordpress 洛米
  • 福建建设人才与科技发展中心网站如何做网站的关键词
  • 自己做直播网站网站建设与排名
  • 随便编一个公司网站做盗版视频网站
  • 网站开发工作 岗位怎么称呼建站必须要域名吗
  • 搭建一个网站湘潭网站建设 搜索磐石网络
  • 做地方网站赚钱吗wordpress 创建 rss
  • 无锡定制公司网站广州网页定制多少钱
  • 深圳自适应网站设计做校园网站的公司
  • 伍壹捌网站建设网页制作面试自我介绍
  • 自学手机网站开发视频推广平台有哪些
  • 诸暨哪些公司可以制作网站黄桃图片友情链接
  • seo网站优化推广怎么做上海优化seo公司