js压箱底的宝贝

框架的确好用, 不过他们也隐藏了JavaScript中丑陋的细节和DOM的运作机制. 如果你的目标是敢于自称"我懂JavaScript", 那么花时间学习框架无异于南辕北辙. 

下面这些JavaScript语言特性你应该熟记在心并避免被他们困扰, 然而多数人可能对此还不熟悉. 

- object.prop和object['prop']是一回事. (所以咱能不用eval么, 谢谢嗷); 对象的属性名都是以字符串来索引的, 连数组的下标都是; for...in能拿来干啥, 不能干啥. 

- 属性检测; undefined是个啥(及其肮脏之处); 不出名的in操作符有何优势, 它与typeof/undefined有何不同; hasOwnProperty方法; delete操作符的作用 

- Number类型本质上只是浮点类型; 语言无关地使用浮点类型的困难所在; 避免parseInt方法的八进制陷阱 

- 潜逃函数的变量作用域; 为避免产生全局变量而使用var关键字的必要性; 作用域与闭包的结合应用; 某个经典的闭包与循环的问题 

- 全局变量与window对象的属性其实是一回事; 全局变量与DOM对象在IE中的命名冲突问题; 以及使用var来规避此类问题. 

- function语句被提升的机理, function语句与function表达式的区别; 为什么避免使用具名函数表达式. 

- 构建函数, prototype属性, new关键字的工作机制; 在此基础上实现一个基本的类-子类-实例OO系统; 何时考虑使用基于闭包的对象来取代原型.(一般的JS教程这里讲的都很渣, 我花了好几年才真正理解) 

- this关键字在函数调用时确定而非函数定义时; 传入作为参数函数为什么不像其他语言那样正常工作; 如何用Function.prototype.bind来解决这个问题. 

- ES5引入的新语言特性, 如indexOf, forEach等; Array类的函数式编程方法; 如何为旧浏览器引入这些方法; 用匿名函数调用这些方法来提高代码可读性. 

- 浏览器与JS的控制流程交换机理; 同步与异步执行; 运行中主动触发的事件与真的事件间的区别, 以及timeout的机制; 调用同步执行的方法(比如alert)可能造成的控制流重进入的潜在异常; 

- 跨window编程中instanceof潜在的问题以及不同文档间控制流程是怎样互相影响的; postMessage会如何解决该问题. 

这里绝大多数问题都需要你批判性地看待JavaScript, 理解它由于历史原因而遗留下来的种种不完美(一般来说比别的语言都要糟糕), 并学会规避这些陷阱. Douglas Crockford在这方面的研究很值得一读(虽然我并非100%同意他的"语言精粹") 
var my = ["foo"]; //下标是0
console.assert(my[0] == "foo"); //按数索引
console.assert(my["0"] == "foo"); //按字符串索引

-
undefined 是一个自由变量, 跟window, document没有区别
虽然有那么一种隐藏的类型存在, 但是undefined可以赋值给任意值
var undefined = 1 // 破坏后面不成熟的js代码
 , null = 'foo' //出错, 因为null是语言关键字

in操作符没见到过, 除了周爱民的那本书...

delete相当于为变量赋值那个特殊的undefined
跟赋null值不同

-
语言无关我也没理解. 不知道是不是那个浮点数储存成二进制的问题(IEEE754还是啥来着)

parseInt如果省略第二个参数那么会智能地检查字符串, 而0开头(且后面没跟[xX])的会被认为是8进制.
Thomas Fuchs推荐的方法是 console.assert(~~(1* "09.2") === 9);
1*确保获得的是数
波浪线是整数的按位取反, 取两次就等于给小数parseInt - -

-
[是嵌套 - -]

那个经典问题:
var items = document.getElementsByTagName('li')
 , i = items.length;
while (i--)
 items[i].onclick = function(){console.assert( i === 0 )} //不会抛出异常

-
IE下的window对象与全局作用域对象间关系问题[javaeye一个劲地超时]
http://hax.javaeye.com/blog/349569

-
function foo(){...} //这是function语句
function(){...} //这是function表达式

提升的作用是(如果没记错的话应该是这样...前段时间网上冒出几个js quiz很重视这个.):
[源代码]
/*一坨ooxx*/
var bar = function(){/*bar的定义*/}; //把一个函数表达式赋值给一个变量名
function foo(){/*foo的定义*/}; //具名函数的定义, 同时这是一个函数语句

[执行顺序]
var foo;
var bar;
foo = function(){/*foo的定义*/}; //具名函数定义的提升
/* ooxx */
bar = function(){/*bar的定义*/}; //没被提升.

-
[闭包是性能杀手. 下划线代表私有属性===王道]
原型继承有这么一个有趣的情况
function Boy () {
 Boy.prototype = {
  fxxk: function(){/*...*/}
 };
}
那么第一个Boy实例不会fxxk
从第二个开始可以 - -

- this关键字那篇写得太完善了...

- 嗯就是Array.prototype的那几个方法, 最后那句的意思是把匿名函数直接传入给forEach, 仅此而已...

-
这个我没啥经验...第二句作者的意思可能是指在某些元素上直接调用focus()或者submit() 与用户点击来触发这些事件的区别.

timeout的机理 John Resig 写过一篇
ejohn.org/blog/how-javascript-timers-work/

-
在某个iframe里面定义的数组不是主window中Array的实例. instanceof检测会返回false
别的不知道了...
for...in当然是循环用的,for i in n,一个代表迭代的次数 一个代表迭代的对象。
可以做有预测的循环,可以检查迭代对象的类型等等。。

- 属性检测; undefined是个啥(及其肮脏之处); 不出名的in操作符有何优势, 它与typeof/undefined有何不同; hasOwnProperty方法; delete操作符的作用 

undefined就是找不到的意思……我认为,就感觉你生命了一个东西,如果没有赋值或者没有表达式就undefined了……typeof是类型监察,监察原型的所属是哪个类型,hasOwnproperty方法,没用过,是监察自身对象都有什么属性的?delete,没用过……查了下是删除对象或者数组一个属性的。。。后面的参数可以是函数表达式可以是数组元素。

- Number类型本质上只是浮点类型; 语言无关地使用浮点类型的困难所在; 避免parseInt方法的八进制陷阱 

前者没感觉有什么困难,可能Number操作比较少吧,parselnt就是转换成数字类型啊……8进制什么的,没用过。。

- 潜逃函数的变量作用域; 为避免产生全局变量而使用var关键字的必要性; 作用域与闭包的结合应用; 某个经典的闭包与循环的问题 

嵌套函数吧~关系比较复杂,但是作用域都是自己{}之间的吧。VAR是向上查找,不可覆盖的~?作用域与闭包的应用避免全局变量,经典的闭包与循环的代码,今天刚看了一个,绑定操作的一个函数,就是循环中套嵌闭包生成独立的命名空间吧。。

- 全局变量与window对象的属性其实是一回事; 全局变量与DOM对象在IE中的命名冲突问题; 以及使用var来规避此类问题. 

window对象肯定和全局变量是一回事,所以要用闭包,全局变量与DOM对象IE中冲突就用var吧……

- function语句被提升的机理, function语句与function表达式的区别; 为什么避免使用具名函数表达式. 

不清楚……匿名函数?表达式和语句的区别这个知道,避免覆盖重复。

- 构建函数, prototype属性, new关键字的工作机制; 在此基础上实现一个基本的类-子类-实例OO系统; 何时考虑使用基于闭包的对象来取代原型.(一般的JS教程这里讲的都很渣, 我花了好几年才真正理解) 

构建函数,prototype属性,new关键字的机制,建立一个类的基本例子,所有书的开头都有……虽然不太好理解,但是总看也会的。先构造函数,然后自身prototype加属性,然后new实例化。~

- this关键字在函数调用时确定而非函数定义时; 传入作为参数函数为什么不像其他语言那样正常工作; 如何用Function.prototype.bind来解决这个问题. 

因为this在JS里指向的是原型。否则就要call或着apply。

- ES5引入的新语言特性, 如indexOf, forEach等; Array类的函数式编程方法; 如何为旧浏览器引入这些方法; 用匿名函数调用这些方法来提高代码可读性. 

说的是扩展原型对象?后面那句没懂。。。

- 浏览器与JS的控制流程交换机理; 同步与异步执行; 运行中主动触发的事件与真的事件间的区别, 以及timeout的机制; 调用同步执行的方法(比如alert)可能造成的控制流重进入的潜在异常; 

回调函数,从上到下,单步,timeout机制懂,其他没体验过……

- 跨window编程中instanceof潜在的问题以及不同文档间控制流程是怎样互相影响的; postMessage会如何解决该问题. 

 

框架的确好用, 不过他们也隐藏了JavaScript中丑陋的细节和DOM的运作机制. 如果你的目标是敢于自称"我懂JavaScript", 那么花时间学习框架无异于南辕北辙. 

下面这些JavaScript语言特性你应该熟记在心并避免被他们困扰, 然而多数人可能对此还不熟悉. 

- object.prop和object['prop']是一回事. (所以咱能不用eval么, 谢谢嗷); 对象的属性名都是以字符串来索引的, 连数组的下标都是; for...in能拿来干啥, 不能干啥. 

- 属性检测; undefined是个啥(及其肮脏之处); 不出名的in操作符有何优势, 它与typeof/undefined有何不同; hasOwnProperty方法; delete操作符的作用 

- Number类型本质上只是浮点类型; 语言无关地使用浮点类型的困难所在; 避免parseInt方法的八进制陷阱 

- 潜逃函数的变量作用域; 为避免产生全局变量而使用var关键字的必要性; 作用域与闭包的结合应用; 某个经典的闭包与循环的问题 

- 全局变量与window对象的属性其实是一回事; 全局变量与DOM对象在IE中的命名冲突问题; 以及使用var来规避此类问题. 

- function语句被提升的机理, function语句与function表达式的区别; 为什么避免使用具名函数表达式. 

- 构建函数, prototype属性, new关键字的工作机制; 在此基础上实现一个基本的类-子类-实例OO系统; 何时考虑使用基于闭包的对象来取代原型.(一般的JS教程这里讲的都很渣, 我花了好几年才真正理解) 

- this关键字在函数调用时确定而非函数定义时; 传入作为参数函数为什么不像其他语言那样正常工作; 如何用Function.prototype.bind来解决这个问题. 

- ES5引入的新语言特性, 如indexOf, forEach等; Array类的函数式编程方法; 如何为旧浏览器引入这些方法; 用匿名函数调用这些方法来提高代码可读性. 

- 浏览器与JS的控制流程交换机理; 同步与异步执行; 运行中主动触发的事件与真的事件间的区别, 以及timeout的机制; 调用同步执行的方法(比如alert)可能造成的控制流重进入的潜在异常; 

- 跨window编程中instanceof潜在的问题以及不同文档间控制流程是怎样互相影响的; postMessage会如何解决该问题. 

这里绝大多数问题都需要你批判性地看待JavaScript, 理解它由于历史原因而遗留下来的种种不完美(一般来说比别的语言都要糟糕), 并学会规避这些陷阱. Douglas Crockford在这方面的研究很值得一读(虽然我并非100%同意他的"语言精粹") 

转载于:https://www.cnblogs.com/cczlovexw/p/7429160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。
数字社区解决方案是一套综合性的系统,旨在通过新基建实现社区的数字化转型,打通智慧城市建设的"最后一公里"。该方案以国家政策为背景,响应了国务院、公安部和中央政法会议的号召,强调了社会治安防控体系的建设以及社区治理创新的重要性。 该方案的建设标准由中央综治办牵头,采用"9+X"模式,通过信息采集、案(事)件流转等手段,实现五级信息中心的互联互通,提升综治工作的可预见性、精确性和高效性。然而,当前社区面临信息化管理手段不足、安全隐患、人员动向难以掌握和数据资源融合难等问题。 为了解决这些问题,数字社区建设目标提出了"通-治-服"的治理理念,通过街道社区、区政府、公安部门和居民的共同努力,实现社区的平安、幸福和便捷。建设思路围绕"3+N"模式,即人工智能、物联网和数据资源,结合态势感知、业务分析和指挥调度,构建起一个全面的数据支持系统。 数字社区的治理体系通过"一张图"实现社区内各维度的综合态势可视化,"一套表"进行业务分析,"一张网"完成指挥调度。这些工具共同提升了社区治理的智能化和效率。同时,数字社区还提供了包括智慧通行、智慧环保、居家养老和便民服务等在内的多样化数字服务,旨在提升居民的生活质量。 在硬件方面,数字社区拥有IOT物联网边缘网关盒子和AI边缘分析盒子,这些设备能够快速集成老旧小区的物联设备,实现传统摄像设备的智能化改造。平台优势体现在数字化能力中台和多样化的应用,支持云、边、端的协同工作,实现模块化集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值