JavaScript Pick—up from NOWCODER__No1

JavaScript 笔试拾遗(1)

1.若需给子scope发送消息,需使用哪个方法

  • $emit() 是向上冒泡;
  • $broadcast() 是向下传播事件 。

2.循环涉及到对象的类型

  • 在原型上扩展的可枚举方法,会被for in循环出来;
  • 使用object.defineProperty可向对象添加或者修改属性;
  • 每个对象都有prototype属性,返回对象类型原型的引用通过hasOwnProperty可判断一个对象以及其原型链上是否具有指定名称的属性;
  • 原型链是JS实现继承的一种模型;
  • For循环和for in 循环都是按照顺序遍历的。

3.下面的方法都可以用作javascript异步模式的编程

  • 回调函数;
  • 事件监听;
  • 发布/订阅;
  • Promises对象。

4.concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,返回一个新的数组。该数组是通过把所有的arrayX参数添加到arryaObject中生成的,如果要进行 concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。

5.下面三个关于事件对象的方法:

  • stopPropagation() 阻止事件冒泡, 这个事件不会阻止定义在元素上的其他事件;
  • stopImmediatePropagation() 会彻底的阻止事件, 在其之后的绑定在元素上的其他监听事件都不会触发;
  • preventDefault() 阻止事件的默认动作。

6.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。


for(var i=0;i<5;++i){
    setTimeout(function(){
        console.log(i+ ' ');
    },100);
}

等到匿名函数执行的时刻,i早就已变成5了。

7.scope: true和transclude: true会创建新的子作用域,并且进行原型继承;
scope: {…} 会创建新的独立作用域,不会进行原型继承;

8.如何遍历下面的 my_data 对象?

var my_data={a:’Ape’, b:’Banana’, c:’Citronella’};


for(var key in my_data) {}

9.假设 output 是一个函数,输出一行文本。下面的语句输出结果是什么?

output(typeof (function() {output(“Hello World!)})());
Hello World! undefined

由内向外

10.function foo() {}是普通的函数声明(f小写)
Function构造函数,正确写法:

var foo = new Function();
function Foo(){
     var i=0;
     return function(){
         document.write(i++);
     }
}
var f1=Foo(),
f2=Foo();
f1();
f1();
f2();

输出

0 1 0

f1,f2是独立的作用域 i++ 先执行后加,所以第一次为0第二次为1

var a,b;
(function(){
    alert(a);
    alert(b);
    var a=b=3;
    alert(a);
    alert(b);
})();
alert(a);
alert(b);

输出

undefined,undefined,3,3,undefined,3

b是全局变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值