白汀

白汀 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

说走就走,是人生最华美的奢侈,也是最灿烂的自由。

个人动态

白汀 回答了问题 · 2016-06-24

一个html文档可以有两组<body>标签吗?

按DOM模型和规范,不是可以试试,而是不行。

<body>
      <h1>hello</h1>
</body>
<body>
  <h2>good</h2>
</body>

现在先进的浏览器都有比较强的容错机制,上面代码你看chrome会把body里的内容合并到一起输出。而IE或者以前一些IE的老版本甚至就会崩溃。

html的展现不仅仅是只有一套html标签的语法,还有一套DOM模型的实现,DOM模型涉及到了dom的树形结构,dom的访问和操作api,事件机制等等, 浏览器都是按这些规范里约定的协议来时实现的,你去破坏了这个约定协议对于容错机制不完善的软件来说就很有可能带来bug甚至导致软件无法运行。

关注 5 回答 4

白汀 回答了问题 · 2016-06-23

解决ES6 中的类如何实现 protected 成员?

"use strict";
var property = Symbol();
class Something {
    constructor(){
        this[property] = "hello";
    }

    test(){
      console.log(this[property]);
    }
}

var instance = new Something();

console.log(instance.property); //undefined
instance.test() //hello

这个方案可以实现,

参考:http://stackoverflow.com/questions/22156326/private-properties-in-javascript-es6-classes
https://tc39.github.io/ecma262/#sec-symbol-objects

传统方式实现就很简单了

function Point(x,y){
  this.x = x;
  this.y = y;

  var z = this.x + this.y;
  this.printZ = function(){
    console.log(z);
  }
}

z就是类中的私有变量

关注 5 回答 3

白汀 赞了回答 · 2016-06-23

写js函数时候碰到了错误。和参数有关系的,搞不明白。

情况一的问题在于运算符优先级,我们先来看看文档是怎么说的:

图片描述

从表格里看到,逻辑运算符||的优先级要比赋值运算符=的优先级高,所以运算的行为实际是这样的:

(options || options) = {}

(options || options)运算后的结果是一个boolean值的结果,并且是一个"左值"(即:不可被赋值的数据),于是当你想把{}赋值给她时,就报错了。

关注 6 回答 4

白汀 赞了回答 · 2016-06-23

写js函数时候碰到了错误。和参数有关系的,搞不明白。

情况一的问题在于运算符优先级,我们先来看看文档是怎么说的:

图片描述

从表格里看到,逻辑运算符||的优先级要比赋值运算符=的优先级高,所以运算的行为实际是这样的:

(options || options) = {}

(options || options)运算后的结果是一个boolean值的结果,并且是一个"左值"(即:不可被赋值的数据),于是当你想把{}赋值给她时,就报错了。

关注 6 回答 4

白汀 回答了问题 · 2016-06-22

chrome插件编写跨域请求错误

因为chrome插件机制也是有安全策略的,你要在配置文件中声明你可允许的网络请求域名。

"permissions": [
    "http://www.enom.com/"
  ]

参考官方文档: https://developer.chrome.com/extensions/xhr
需要翻墙访问

关注 6 回答 3

白汀 回答了问题 · 2016-06-22

解决发现一个问题

对的,因为换行或者空格其实也是一个文本节点,所以会有一个间隙。
1.将所有标签连着输出,不换行,无空格,现在有很多网站html压缩输出就是这样的。
2.或者给元素加float来布局,或者其它合适的可以避免空白的布局当时

关注 5 回答 4

白汀 回答了问题 · 2016-06-22

解决这样的水平能找到前端开发的工作吗?

我看了你的一点代码,个人觉得还是很不错的,学习能力应该不错。比我以前面试过的很多人都好多了。有些人也是其它专业转过来做的,学了个把2个月就兴冲冲的出来找工作。你能写出一些很不错的例子已经很不错了。

另外如果你选择做程序开发的话,英语水平将来绝对是会对你产生很大的帮助,而且效果是持续性的。想想,你看英文文章就是比别人理解的快,阅读的快,跟踪国外社区的信息就是容易的多,有新的技术概念出来不用翻译就能很快的理解,也可以更加顺畅的跟国外社区上人交流。 久而久之就是会产生一个优势积累的效果。

关于css, 页面布局能力,100个人实现同一个设计效果的页面布局有肯能就有100种(如果不使用一些CSS框架或者组件的情况下),因为这个很依赖于跟人经验。一种布局结果可能可以使用定位,浮动,flex等,解决布局产生的问题也是可能会有很多种方式。个人感觉要在这方面有比较高的水平,唯一的方式就是做的多,实践的多,这个基本靠经验积累。当然有些理论也是可以从前人那学来的,比如栅格化,模块化的css等等。 个人觉得你在这方面可能掌握了一些基础知识,要随心所欲的运用这个只能在实际中去实践。

我看你的博客里有一些关于requirejs,vue,nodejs这些东西的笔记之类的,以你的学习能力我相信在有前辈带领的情况还是很容易上手去胜任一些工作的。对你来说可能欠缺的是计算机专业类的一些基本理论知识,比如面向对象,数据结构,网络协议,http的基本知识等等。这些都都可以以后再工作中去学习,多买些书学习。

所以说已具备一定的入门能力和技能,为啥就不能去找一份工作呢,是吧。总是有合适的公司能适合你的。
个人建议找一家公司,看面试官是否能力,看他是否有能力带你,是否有时间和愿意培养新人,其它的如果对你来说不重要的话就都放下吧。进去后然后拼命学,拼命请教,先把工作中应用的到技能学熟练,然后在扩展到其它方面,在实践中成长才能最有效最快。

关注 16 回答 10

白汀 回答了问题 · 2016-06-22

给定一个2n长的数组将奇数放在偶数前面

var l = [1, 2, 4, 6, 3, 5]
var i=0, item, last = l[l.length-1], count=0;
while(i<l.length){
  count++;
  item = l[i];
  if(item == last){
    break;
  }
  if(item % 2 == 0){
    l.splice(i, 1);
    l.push(item);
  }else{
    i++;
  }
}
console.log(count); //循环执行了多少次
console.log(l); //最后结果

js实现应该是这样的,偶数时释放一个,然后追加到末尾,当处理到初始数组最后一个时停止。 参考了前面moling3650的代码。。

关注 28 回答 17

白汀 回答了问题 · 2016-06-22

如何控制动态生成的div,在操作的时候都是独立的个体,互不影响

没明白啥意思。。。

关注 2 回答 1

白汀 回答了问题 · 2016-06-17

初学者学习node.js怎么提高效率。

个人比较赞同在实践中提高和学习,只有有实际需求或者问题才会更加推动你去使用和查找资料来解决问题。如果你要提高nodejs的实践水平,当你碰到问题时考虑用nodejs去解决就产生需求了。

如果你已经有一定的js能力我想语言语法层面的上的就不用了学了,如果还没有掌握,那只能从掌握js开始了。javascript权威指南之类的书都是可以的。

《了不起的node.js》,《深入浅出node.js》这些书最早的时候我也看过,也是从这个开始了解的。node的版本更新比较快,估计写的早的书有些api或者模块已经落后很多了。实际使用的时候可以参考node官方网站的api来。不过书上写的模块系统,事件回调机制,常用的fs,http之类的库 大多理论还是可用的。我觉书看了,理论知识基本够你开始去实践了。

对于如何在实践中去学习,提高。得从自身工作中或者兴趣中去找需求点。
比如我今天正有同事要我帮把一批商品信息直接导入到数据库。 只给我提供了一个文件夹目录,还有一个excel文档,excel文档里有编号对应图片。 我需要对图片做处理,然后读取excel文件里的数据,然后还要连接数据库,网数据库里写入对应的数据。那这里就会涉及到文件操作,图片处理,excel数据处理,mysql数据读取等等。
然后可能回去尝试找对应的开源node模块,发现有walk可以帮助方便的遍历文件,image-size可以读取图片大小,node-xlsx可以方便的额读取excel文档,sequelize可以方便的链接mysql数据库。如果发现没有合适的模块引入,那只能考虑自己去写写了。nodejs的开源模块有很多,从利用这些模块来帮助自己解决问题,可以帮助你方便的使用nodejs做一些事情又不会感觉困难。逐渐的也提升了一些能力, 如果更关系很多模块的实现,也可以去尝试看它的代码也不会特别的难。

比如你对某些网站的东西很感兴趣,想把它抓取到本地保存一些资料,或者想把一些网站的信息聚合起来方面自己阅读。你会发现可以用request,cheerio这种开源模块很容易的实现一个简单的抓取工具。

我想类似这些场景每个人都会有些自己的需求,日常工作中多少都会碰到一些繁琐或者重复的事情需要做,那这些事情是不是可以尝试自己写一些脚本去帮你做呢。那就可以考虑去用nodejs试试, 自然而然你就是在提升自己的实践能力,从而有更深的领悟。

关注 15 回答 8

认证与成就

  • 获得 23 次点赞
  • 获得 4 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-04-16
个人主页被 1.1k 人浏览