3月4日
new操作符具体干了什么呢?
1、创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到this引用的对象中。
3、新创建的对象由this所引用,并且最后隐式的返回this。
1 var obj = {}; 2 obj._proto_ = Base.prototype; 3 Base.call(obj);
3月5日
1、怎样添加、移除、移动、复制、创建和查找节点?
a、创建新节点
createDocumentFragment()//创建一个DOM片段
createElement()//创建一个具体的元素
createTextNode()//创建一个文本节点
b、添加、移除、替换、插入
appendChild()//添加
removeChild()//移除
replaceChild()//替换
insertBefore()//插入
c、查找
getElementsByTagName()//通过标签名称
getElementsByName()//通过元素的Name属性的值
getElementsById()//通过元素Id,唯一性
2、二维数组的全排列组合。
1 function printArr(arr,n,res){ 2 for(var i = 0; i<arr[i].length;i++){ 3 if(n == 0){ 4 res = [] 5 } 6 if(n<arr.length){ 7 var _res = res.slice() 8 _res.push(arr[n][i]) 9 if(n == arr.length-1){ 10 console.log(_res) 11 }else{ 12 printArr(arr,n+1,_res) 13 } 14 } 15 } 16 } 17 // 测试: 18 var arr = [[1,2],[3,4],[5,6]] 19 printArr(arr,0)
3、打印青蛙跳台阶的所有方式
1 function step(n,res){ 2 if(n==0){ 3 res=[] 4 } 5 var i=1 6 while(i<3){ 7 if(n+i<=10){ 8 var _res = res.slice() 9 _res.push(i); 10 if(n+i == 10) { 11 console.log(_res); 12 }else{ 13 step(n+i, _res); 14 } 15 } 16 i++; 17 } 18 } 19 step(0);
3月6日
JavaScript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
hasOwnProperty
JavaScript中的hasOwnPrototype函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。
使用方法:
obj.hasOwnProperty(proName)
其中参数object是必选项。一个对象的实例。
proName是必选项。一个属性名称的字符串值。
Object.prototype.prop = ‘propsss‘;
var obj = {name:‘mrFan‘};
console.log(obj.hasOwnProperty(‘prop‘)); // false
console.log(obj.hasOwnProperty(‘name‘)); // true
如果object具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回true,反之则返回false
3月8日
你如何获取浏览器URL中查询字符串的参数?
1 function showWindowHref(){ 2 var sHref = ‘http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23‘; 3 var args = sHref.split(‘?‘) 4 if(args[0]==sHref){ 5 return ‘‘ 6 } 7 var arr = args[1].split(‘&‘); 8 var obj = {} 9 for(var i =0;i<arr.length;i++){ 10 var arg = arr[i].split(‘=‘) 11 obj[arg[0]]=arg[1] 12 } 13 return obj; 14 } 15 var href = showWindowHref()
3月9日
Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
(1)声明位于文档中的最前面,处于标签之前。告知浏览器的解析器,用什么文档类型规范来解析这个文档
(2)严格模式的排版和js运作模式是以该浏览器支持的最高标准运行。
(3)在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作
(4)DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现
3月10日
1 for(var i=0;i<5;i++){ 2 setTimeout(function(){ 3 console.log(i)//5个5 4 },i*1000) 5 }//如果想改成0,1,2,3,4 里面就要使用立即执行函数
//在Es5中,这样也会是可以的
//for(let i=0;i<5;i++){
//setTimeout(function(){
//console.log(i)//5个5
//},i*1000)
//}
3月12日
1 console.log(false==‘0‘)//true 2 console.log(false===‘0‘)//false
在JavaScript中,有两套相等的运算符。三重相等运算符===的行为与任何传统的相等运算符相同:如果两侧的两个表达式具有相同的类型和相同的值,则计算为true。然而,双等号运算符在比较它们之前试图强制这些值。因此,通常使用===而不是==。对于!==和!=也是一样
3月13日
1 console.log("0||1="+(0||1)) 2 console.log("1||2="+(1||2)) 3 console.log("0&&1="+(0&&1)) 4 console.log("1&&2="+(1&&2))
3月17日
1 function fn(a,b){ 2 //请在此处输入一段代码,让a和b的值能够交换 3 //注意:不允许借助其他变量 4 a = a+b; 5 b = a-b; 6 a = a-b; 7 console.log(a,b)//2,1 8 } 9 fn(1,2) 10 11 //除了可以使用加减之外,也可以使用乘除,但是此时需要注意,a、b中不能 12 //有0 13 //乘除的实现方法为a=a*b;b=a/b;a=a/b;
3月18日
1 var arr =[] 2 arr[0] = ‘a‘ 3 arr[1] = ‘b‘ 4 arr.foo = ‘c‘ 5 console.log(arr.length)//2 6 arr.length +=arr.foo.length 7 console.log(arr.length)//3
3月19日
function course(name,age){ console.log(age);//undefined console.log(arguments[1]);//undefined arguments[1] = 2; console.log(age);//undefined console.log(arguments[1]);//2 } course(‘渡一教育‘)
3月20日
1 var h5course = false; 2 var result = h5course/0;//NaN 3 if(result){ 4 console.log(result*2+‘2‘+4) 5 }else{ 6 console.log(111) 7 console.log(!result*2+‘2‘+4)//true*2+‘2‘+4 224 8 }
原文:https://www.cnblogs.com/yqyf/p/12421574.html