function

function*

The function* keyword can be used to define a generator function inside an expression.

Syntax

function* [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

example:
function* fn() {
        console.log(1);
        //暂停!
        yield;
        //调用next方法继续执行
        console.log(2);
    }
    var iter = fn();
    iter.next(); //1
    iter.next(); //2

Parameters

name
The function name. Can be omitted, in which case the function is anonymous. The name is only local to the function body.
paramN
The name of an argument to be passed to the function. A function can have up to 255 arguments.
statements
The statements which comprise the body of the function.
arrow function

箭头函数有两个好处。☕

1.他们比传统函数表达式简洁。

const arr = [1, 2, 3];
const squares = arr.map(x => x * x);

// 传统函数表达式:
const squares = arr.map(function (x) { return x * x });

2.箭头函数不会绑定关键字this,我们不需要用bind()或者that = this这种方法了

复制代码
function UiComponent() {
    const button = document.getElementById('myButton');
    button.addEventListener('click', () => {
        console.log('CLICK');
        this.handleClick(); // this不再是button
    });
}
复制代码

 

constructor vs expression

expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-
(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
  这个是css的行为--expression,目的系快捷在css里面使用js定义一个参数,这段代码最后输出的是一个数字,eval是js里面的一个函数,功能是计算某个字符串,并执行其中的的js代码;document.documentElement.scrollTop+document.documentElement.clientHeight计算当前网页可见区域的高度;this.offsetHeight该类指定的容器整个高度(包括溢出部分);parseInt(this.currentStyle.marginTop,10)这个函数是解析一个字符串,并返回一个整数,逗号后面个10可以解析为以10进制的形式输出逗号前面的数字,这个10可以表现为2,8,10,16,32;||0是或0的意思,即是前面的数字返回非0或负数时使用0这个数字输出。后面也是同理的。

eval() 函数

  可计算某个字符串,并执行其中的的 JavaScript 代码。 
语法 
  eval(string) 参数 
描述 
  string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 
返回值 
  通过计算 string 得到的值(如果有的话)。 
说明 
  该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。 如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。 
抛出

  如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。 

  如果非法调用 eval(),则抛出 EvalError 异常。 
  如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。 

scope

scope用来声明IOC容器中的对象应该处的限定场景或者说该对象的存活空间,即在IOC容器在 对象进入相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。打个比方吧!我们都是处在社会 (容器)中,如果把中学教师作为一个类定义,那么当容器初始化这些类之后,中学教师只能局限在中学这个场景中,中学,就可以看做中学教师的scope。

Spring容器最初提供了两种bean的scope类型:singleton和 prototype,但发布2.0之后,又引入了另外三种scope类型,即request,session和global session类型。不过这三种类型有所限制,只能在web应用中使用,也就是说,只有在支持web应用的ApplicationContext中使用这 三个scope才是合理的。

可以使用bean的singleton或scope属性来指定相应对象的scope,其中,scope属性只能在XSD格式的文档生命中使用,类似于如下代码所演示的形式:

DTD:

<bean id ="mockObject1" class="..." singleton="false" />

XSD:

<bean id ="mockObject1" class="..."   scope="prototype" />

注意:这里的singleton和设计模式里面的单例模式不一样,标记为singleton的bean是由容器来保证这种类型的bean在同一个容器内只存在一个共享实例,而单例模式则是保证在同一个Classloader中只存在一个这种类型的实例。

posted @ 2018-11-11 19:32  不服输的Tiger  阅读(215)  评论(0编辑  收藏  举报