博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript进阶试题
阅读量:6834 次
发布时间:2019-06-26

本文共 3037 字,大约阅读时间需要 10 分钟。

1.选出以下几个中为true的选项

null instanceof Objectnull === undefinednull == undefinedNaN == NaNnull === null

2. 写出下题的输出结果

1 function Person(name, age) { 2             this.Name = '为负值'; 3             this.Age = '为负值'; 4             (function () { 5                 this.Name = name; 6                 this.Age = age; 7             }).call(this); 8             this.sayHello = function () { 9                 alert('this.name,hello:' + this.Name);10                 alert('window.name,hello:' + window.Name);11             };12         }13         var p = new Person('sunny', '18');14         p.sayHello();

3.写出下题的输出结果

1  var a = 10;2  sayHi();3  function sayHi() {4      var a = 20;5      alert(a);6  }7  alert(a);

4. 写出下题的输出结果

1 function foo() { 2     foo.abc = function () { alert('def'); }; 3 abc = function () { alert('@@@@'); }; 4 var abc = function () { alert('$$$$$'); }; 5 } 6 foo.prototype.abc = function () { alert('456'); }; 7 foo.abc = function () { alert('123'); }; 8 var f = new foo(); 9 f.abc(); 10 foo.abc(); 11 abc();

附:答案

1. false, false, true, false, true

2. this.name,hello:sunny

    window.name,hello:undefined

3.20, 10

4. alert('456'); alert('def');  最后一个abc() 方法可能会报错!  

   这个不知道多少人会错

 附:

 1. instanceof 

  为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型

  语法为 o instanceof A

  实例: a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假

 2. call

  语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

  定义:调用一个对象的一个方法,以另一个对象替换当前对象。
  说明:
  call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由thisObj 指定的新对象。
  如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

  简单的可以理解为

   a.call(b); a.method.call(b,argument1,argument2);

   简单实例: 

1 function add(a,b)  2 {  3     alert(a+b);  4 }  5 function sub(a,b)  6 {  7     alert(a-b);  8 }  9 10 add.call(sub,3,1);

 这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);

  注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。 

 稍微复杂点的实例:

1 function Class1()  2 {  3     this.name = "class1";  4  5     this.showNam = function()  6     {  7         alert(this.name);  8     }  9 } 10 11 function Class2() 12 { 13     this.name = "class2"; 14 } 15 16 var c1 = new Class1(); 17 var c2 = new Class2(); 18 19 c1.showNam.call(c2);

  注意,call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,

  现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,

  执行的结果就是 :alert("class2");

 

 实现继承的实例: 

1 function Class1()  2 {  3     this.showTxt = function(txt)  4     {  5         alert(txt);  6     }  7 }  8  9 function Class2() 10 { 11     Class1.call(this); 12 } 13 14 var c2 = new Class2(); 15 16 c2.showTxt("cc");

  这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,

  那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,

  执行结果就是:alert(“cc”); 

  多重继承: 

1 function Class10()  2 {  3     this.showSub = function(a,b)  4     {  5         alert(a-b);  6     }  7 }  8  9 function Class11() 10 { 11     this.showAdd = function(a,b) 12     { 13         alert(a+b); 14     } 15 } 16 17 18 function Class2() 19 { 20     Class10.call(this); 21     Class11.call(this); 22 }

  ok 就介绍到这里了。关于call的方法参考的博文

 

转载于:https://www.cnblogs.com/flyfishing/articles/4276975.html

你可能感兴趣的文章
所有类型都从Object类型派生
查看>>
关于MFC和android开发上的一些相近地方
查看>>
Linux下rsync的用法
查看>>
c# DataGridView控件的使用
查看>>
TChart的用法
查看>>
DTP语义组分析
查看>>
(老孙随笔)燃烧青春和诗意的IT人生
查看>>
在PowerDesigner中设计概念模型
查看>>
SQL语句,查询数据库里是否存在某个表
查看>>
CSS常用属性
查看>>
搜索引擎开始「实体搜索」新领域竞争,Google、百度分别发力实体搜索产品
查看>>
让敏捷落地-软件研发管理最佳实践(上海站)
查看>>
【R】大型机Linux系统安装R及bsub提交R任务
查看>>
演练:创建并运行托管代码的单元测试 VS2012
查看>>
C#在托盘显示图标
查看>>
把老赵的页面缓存片断改一下,呵呵
查看>>
没有使用全局变量的必要时,就尽量不要使用全局变量。
查看>>
Extjs- Ext.extend函数的使用
查看>>
hdu 1172(暴力题)
查看>>
Oracle to_char()
查看>>