作者: admin

  • textarea cols,rows属性和宽度高度关系研究

    总结一下就是:
    貌似在Chrome浏览器下才有点实用价值,因为其他浏览器下的宽度波动太明显,任何其他环境的变化都会导致宽度不一样,这个其实在网页布局中是很糟糕的。因为,网页是自上而下流式的,高度可以很长很长,但是,宽度一般是固定的,资源比较紧张,要求布局精确,因此,一旦出现宽度在各个浏览器下不一样的情况,势必大大影响其实用价值。因此,在实际web制作的时候,除非一些对宽度要求不高的情况,其余时候,还是使用CSS width属性来控制文本域的宽度。

     

    最后的结束语

    最后研究的结果是,兼容性很差,想要各个浏览器下表现一模一样成本很高。因此,如果对文本域的布局要求比较严格,还是使用CSS width/height属性精确控制。

    唯一的收获就是,知道了各个浏览器如何兼容性不一,以及最终尺寸呈现的计算方法,相关因素等,说不定,对于日后某个功能实现提供了不一样的思路呢!

     

    http://www.zhangxinxu.com/wordpress/2016/02/html-textarea-rows-height/

  • Edge.js是什么

    Edgejs

     

    Edge.js是一个遵循Apache 2.0协议的开源项目。它目前的开发很活跃,欢迎前来贡献代码。你可以用你的时间和经验来检查工作项目列表。

    尽管本文中所有的例子都是使用C#写的,Edge.js支持在Node.js程序中运行任何CLR语言的代码。目前的扩展提供了对脚本语言F#、Python和PowerShell的支持。通过语言扩展模型你能很容易的添加其他CLR语言的编译器。

    Edge.js目前需要.NET Framework环境,因此只能运行在Windows上。但是对Mono的支持也在积极的开发中,不久就可以在MacOS和*nix上运行Edge.js程序了。

  • jQuery.extend和jQuery.fn.extend区别

    一句话:jQuery.extend是对JQuery类的自定义扩展,jQuery.fn.extend是对JQuery对象的自定义扩展.

    所以使用jQuery.extend扩展插件是 调用是类似 $.ajax()。
    jQuery.fn.extend上扩展插件是,使用 $().xxx()。

     

     

    1,为什么使用jQuery.extend扩展,是使用$.ajax()方式去调用呢?

    答:jQuery.fn.init.prototpe=jQuery.fn.prototype //这里jQuery只是把它自己的原型对象赋值给了jQuery.fn.init的原型对象,
    并没有把jQuery的构造函数里面的实例属性和实例方法给jQuery.fn.init。类似于:

    function $(){};
    $.diy=function(){
     //这里自定义了diy的方法。
    }

    调用就是$.diy();

     

     

    2, 为什么使用jQuery.fn.extend扩展,是使用$().diy()方式去调用呢?

    答: 
    var jQuery=function(){
     return new jQuery.prototype.init();
    }

    $()就是执行了jQuery的函数,而函数返回的是一个new jQuery.prototype.init()对象,既然是对象就可以$().diy()。去调用方法了。
    所以jQuery.extend和jQuery.fn.extend是不同概念的。

    一句话:jQuery.extend是对JQuery类的自定义扩展,jQuery.fn.extend是对JQuery对象的自定义扩展.

  • 请问js中给function添加的属性去哪儿了?有什么用途?,在js中为什么说函数也是对象?

    函数是对象

    在js中为什么说函数也是对象?

    我们都知道js中的对象要调用里面的属性和方法一般的写法都是:

    obj,name;  
    obj.run();

    这样很正常,但是function也能这么写,例如:

    function wo(){}  //声明了一个函数
    
    wo.name='我';
    wo.run=function(){ return '这是一个方法'; }
    
    调用方法跟调用对象一样:
    obj.name; 
    obj.run();

     

    其实这么写的作用,就要联想到js的面向对象思想了,一般我们写一个构造函数的写法是:

    function Wo(){
     this.myname='我1'; //这里的this其实也就是Wo本身,并且还是私有的,外界无法访问,也不能修改,同时也是起到了初始化的作用。
     this.run=function(){ }
    }
    
    alert( Wo.myname ); //试图访问 myname 返回的是 undefined
    
    Wo.myname='我2'; //试图修改 this.myname的值
    
    alert( Wo.myname ); //修改失败,因为不能访问,这里访问到的是外界的 我2

     

     

     

    引入一篇文章:《请问js中给function添加的属性去哪儿了?有什么用途?

    请问下,因为Function是引用类型,那么就可以给他添加自定义的属性,可是添加的这个属性有什么用途呢?

    var sfFunc = function(){};
    sfFunc.ename = 'segmentfault';

     

     

     

    在javascript中,函数被认为是第一类对象,即函数可以被传递或者可以携带属性或方法。

    在函数中使用this,添加的方法,可以被认为是为其添加了私有方法:
    (你举例用了对象字面量创建函数,在添加属性这方面跟直接声明函数一致)

    function Bar(){
        this.foo = 123;
    }
    
    var temp = Bar;
    temp.foo   // undefined    这样是访问不到的,虽然temp指向了Bar的引用
    
    var bar = new Bar();
    bar.foo    // 123       因为bar是Bar的实例,所以可以理解为bar将Bar里的私有属性和方法都克隆到自己的身上,并且克隆过来的属性和方法和被克隆体(Bar)脱离干系。
    

    私有化属性和方法的作用是保护属性或方法不被随意重写/覆盖:

    function Blog(){
        this.title = 'blue sky';
    }
    
    var bar = new Blog();
    bar.title      // 'blue sky'
    
    var foo = Blog;
    foo.title = 'green sky'    // 试图改写title属性
    foo.title   //   'green sky'    
    bar.title   //   'blue sky'    依旧是原来的值
    

    那么这样有什么用呢?

    最常见到的应该就是初始化对象了:

    function People(name,age){
        this.name = name;
        this.age = age;
    }
    
    var boy = new People('qianjiahao',22);
    boy.name   // qianjiahao
    boy.age    // 22
    

    它可以像工厂一样按一个模子,给你制造任意多的固定格式的对象,但是缺陷也很明显,格式太固定,如果想变变花样还不行,这时,就可以配合原型,来制造任意多的期望对象(模拟设计模式:继承)