买了云课堂的前端微专业课程,在这里记录下解题的过程,一来防止自己偷懒,二来希望朋友们看到能提提意见,共同进步。
主要放大题自己写的答案,有些会提提思路,代码基本都在在线代码平台上。
注:除注明作者外,其他均为本人回答
PS部分
HTML部分
创建三个截图的HTML结构代码
第一题是一个阅读排行榜的,第二题是一个邮递区域表格,第三题是一个提交表单
解答地址:http://runjs.cn/detail/gmxxlrhq 点击“查看源码”可以看到源代码
CSS部分
实现两列自适应布局
解答地址:http://runjs.cn/detail/8ld3y1gf
实现三列垂直平分标签选项卡
解答地址:http://runjs.cn/detail/xqdyocbt
实现一个弹窗
这题略坑爹,实际项目一般都用js实现垂直居中对齐
解答地址:http://runjs.cn/detail/3wx5slgu
JavaScript部分
类型检测函数
题:编写一个type()函数,识别js各种类型
解答:http://runjs.cn/code/oahcxwfa,主要利用对象原型链上的toString方法实现(Object.prototype.toString)
引用类型复制
题:要克隆出一个独立但属性、方法完全一样的对象,该如何实现?
解答:主要参考jQuery extend方法做了实现,地址:http://runjs.cn/code/hls9ogyl
引申问题:需使用对象拷贝的场景?
课程老师严跃杰回答:
比较容易想到的场景是数据对象处理,比如一份数据对象被各个使用者使用时,为了相互之间不影响,每个使用者都需要拷贝自己的一份数据。但是继续深入,我们需要思考为何js本身不提供这样一个clone函数?因为js的对象拷贝本身没有一个明确的标准(对这个讨论提来说就是没有一个标准答案),通常我们需要根据对象类型,对象需要实现功能去实现。比如数据对象拷贝跟函数对象拷贝可能目的和实现方法都不同,另外有些对象可能还有私有属性(闭包属性),用于表示对象状态或某些私有数据,这时对象拷贝就会遇到问题。总之,对象拷贝需要考虑对象类型及对象需要实现功能,因此js本身没有提供也无法提供这样一个通用clone函数,但是我们可以实现某些特定对象类型(或自定义对象)的clone函数,比如DOM中cloneNode方法,jQuery中的clone,extend方法等(这些方法其实就是使用js对象拷贝的场景)。
总结一下:1. 没必要也很难实现一个通用的克隆函数 2. 要根据不同业务场景设计不同的克隆函数
实现生成[0-999]之间随机整数的函数
解答:http://runjs.cn/code/tgivvt2r,主要用了Math.random方法