作者: admin

  • avalon html标签大全

    avalon指令

    为webstorm添加支持avalon的自动补全代码提示:

    在file菜单下选择Settings,选择Editor ——> Inspections ——> Html ——> Unknown HTML tag attibute

     

    这里得介绍一下avalon的扫描顺序,因为一个元素可能会存在多个属性。总的流程是这样的:

    ms-skip –> ms-important –> ms-controller –> ms-if –> ms-repeat –> ms-if-loop –> …–>ms-each –> ms-with –> ms-duplex

     

    ms-href
    ms-repeat
    ms-text
    ms-html
    ms-widget
    ms-if
    ms-if-loop
    ms-visible
    ms-widget
    ms-attr
    ms-data
    ms-for //avalon2.x新增遍历数据
    ms-css
    ms-attr-disabled
    ms-attr-readonly
    ms-duplex-string
    ms-attr-selected
    ms-attr-checked
    ms-attr-id
    ms-attr-name
    ms-attr-src
    ms-attr-title
    ms-attr-data
    ms-hover
    ms-class
    ms-active
    ms-include
    ms-skip
    ms-controller
    ms-important
    ms-duplex
    ms-duplex-number
    ms-duplex-string
    ms-duplex-boolean
    ms-duplex-checked
    ms-data-duplex-observe
    data-duplex-changed
    data-duplex-focus
    data-duplex-event
    ms-submit
    ms-scroll
    ms-scan
    ms-change
    ms-input
    ms-click
    ms-dblclick
    ms-keypress
    ms-keydown
    ms-keyup
    ms-mousemove
    ms-mouseover
    ms-mouseout
    ms-mouseleave
    ms-mouseenter
    ms-focus
    ms-blur
    ms-animationend
    ms-include-src
    ms-on-animationend
    ms-on-blur
    ms-on-change
    ms-on-input
    ms-on-click
    ms-on-dblclick
    ms-on-focus
    ms-on-keydown
    ms-on-keypress
    ms-on-keyup
    ms-on-mousedown
    ms-on-mouseenter
    ms-on-mouseleave
    ms-on-mousemove
    ms-on-mouseout
    ms-on-mouseover
    ms-on-mouseup
    ms-on-scan
    ms-on-scroll
    ms-on-submit
    data-include-replace
    data-include-rendered
    data-include-loaded

  • 在线获取并下载youtube视频

    Youtube视频高清下载,不给力的插件就不推荐了,这几个工具,绝对是相见恨晚:

    1首推en.savefrom.net/

    网站的主要功能是保存,直接粘贴youtube网址地址,可以下载,可以选择多种格式和清晰度,下载速度在国内也很快。可以直接选择MP4,3GP,FLV格式,相当顺手。支持网站多,vimeo.commetacafe.com等知名网站的视频资源都可以下载

    y1

    2其次是YouTube Video Converter and Download

    顾名思义,这个网站的主要功能是转换,下载的速度不是很快,但是转换功能强大,支持转为MOV,AVI,MP4,3GP格式,同时也可以直接提取MP3,M4A,AAC格式音频。只支持youtube。

    y2

    3离线下载神器寄居蟹Hcrab:Youtube视频离线下载服务(已挂 截至2015 0813)

    这个网站为那些流量限制的用户带来福音(GoAgent 用户啊,简直就是为你们定制的呀),网站可以直接把youtube视频下载到他们的服务器上面,通过他们的服务器下载,就不会算你的VPN流量了。(友情提示:迫于服务器压力2小时之内只能下载10个视频)下载速速也还可以。缺点是不支持视频源文件名命名,下载多的话,乱码命名的视频名字改起来,我整个人都不好了。

    y3

    重磅消息给你:如何将youtube视频在大陆在线播放呢?

    哈哈哈,是这样子的,

    第一步,在寄居蟹Hcrab:Youtube视频离线下载服务获取视频下载地址。

    第二步,用百度网盘的离线下载功能下载到自己的网盘

    y4

    y5

    第三步:在线播,顺便也可以共享好友。

    y6

    小提示:使用以上工具时,请自觉遵守当地法律法规哦。

    附视频地址:youtube.com/watch?

     

     

  • 火狐下载youtube视频

    youtube视频下载插件

    网上有很多下载yutube视频的办法,最近发现一款非常好用的youtube视频下载插件yutube video and audio dowanloader,在火狐狸添加该插件后打开yutube视频后,就会在视频下方出现黄颜色的dowanload下载标签,点击下载选择你需要的视频格式即可。


    其实下载yutube视频还是相对容易的,不需要那么纠结,一个插件就搞定了。

    插件官方下载地址:yutube video and audio dowanloader

    网盘下载:yutube video and audio dowanloader

  • Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    Function、Object:Js自带的函数对象。
    prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(Function.prototype函数对象是个例外,没有prototype属性)。
    __proto__:每个对象都有一个名为__proto__的内部隐藏属性,指向于它所对应的原型对象(chrome、firefox中名称为__proto__,并且可以被访问到)。原型链正是基于__proto__才得以形成(note:不是基于函数对象的属性prototype)。
    关于上面提到的函数对象,我们来看以下例子,来说明:

    var o1 = {};
     var o2 =new Object();
     
     function f1(){}
     var f2 = function(){}
     var f3 = new Function('str','console.log(str)');
     
     f3('aabb'); // aabb
     console.log('typeof Object:'+typeof Object); //function
     console.log('typeof Function:'+typeof Function); //function
     console.log('typeof o1:'+typeof o1); //object
     console.log('typeof o2:'+typeof o2); //object
     console.log('typeof f1:'+typeof f1); //function
     console.log('typeof f2:'+typeof f2); //function
     console.log('typeof f3:'+typeof f3); //function
    • 通常我们认为o1、o2是对象,即普通对象;f1、f2、f3为函数。
    • 但是其实函数也是对象,是由Function构造的,
    • f3这种写法就跟对象的创建的写法一样。f1、f2最终也都像f3一样是有Function这个函数构造出来的
    • f1、f2、f3为函数对象,Function跟Object本身也是函数对象。

           Js中每个对象(null除外)都和另一个对象相关联,通过以下例子跟内存效果图来分析Function、Object、Prototype、__proto__对象间的关系。

    function Animal(){
     
     }
     var anim = new Animal();
     
     console.log('***********Animal anim proto*****************');
     console.log('typeof Animal.prototype:' +typeof Animal.prototype); //object 
     console.log('anim.__proto__===Animal.prototype:'+(anim.__proto__===Animal.prototype)); //true
     console.log('Animal.__proto__===Function.prototype:'+(Animal.__proto__===Function.prototype)); //true
     console.log('Animal.prototype.__proto__===Object.prototype:'+(Animal.prototype.__proto__===Object.prototype)); //true
     
     console.log('***********Function proto*****************');
     console.log('typeof Function.prototype:'+typeof Function.prototype); //function
     console.log('typeof Function.__proto__:'+typeof Function.__proto__); //function
     console.log('typeof Function.prototype.prototype:'+typeof Function.prototype.prototype); //undefined
     console.log('typeof Function.prototype.__proto__:'+typeof Function.prototype.__proto__); //object
     console.log('Function.prototype===Function.__proto__:'+(Function.prototype===Function.__proto__)); //true
    console.log('***********Object proto*****************');
     console.log('typeof Object.prototype:'+typeof Object.prototype); //object
     console.log('typeof Object.__proto__:'+typeof Object.__proto__); //function
     console.log('Object.prototype.prototype:'+Object.prototype.prototype); //undefied
     console.log('Object.prototype.__proto__===null:'+(Object.prototype.__proto__===null)); //null
    console.log('***********Function Object proto关系*****************');
     console.log('Function.prototype===Object.__proto__:'+(Function.prototype===Object.__proto__)); //true
     console.log('Function.__proto__===Object.__proto__:'+(Function.__proto__===Object.__proto__)); //true
     console.log('Function.prototype.__proto__===Object.prototype:'+(Function.prototype.__proto__===Object.prototype)); //true
    /********************* 系统定义的对象Array、Date ****************************/
     console.log('**************test Array、Date****************'); 
     var array = new Array();
     var date = new Date();
     console.log('array.__proto__===Array.prototype:'+(array.__proto__===Array.prototype)); //true
     console.log('Array.__proto__===Function.prototype:'+(Array.__proto__===Function.prototype)); //true
     console.log('date.__proto__===Date.prototype:'+(date.__proto__===Date.prototype)); //true
     console.log('Date.__proto__===Function.prototype:'+(Date.__proto__===Function.prototype)); //true

    Function、Object、Prototype、__proto__内存关系图

    8164530

    上面的内存图跟堆栈结构可以参照文章Javascript_01_理解内存分配
            堆区图说明:

    35166462

    Function.prototype函数对象图内部表示prototype属性的红色虚框,只是为了说明这个属性不存在。
            通过上图Function、Object、Prototype关系图中,可以得出一下几点:
    1. 所有对象所有对象,包括函数对象的原型链最终都指向了Object.prototype,而Object.prototype.__proto__===null,原型链至此结束。
    2. Animal.prototype是一个普通对象。
    3. Object是一个函数对象,也是Function构造的,Object.prototype是一个普通对象。
    4. Object.prototype.__type__指向null。
    5. Function.prototype是一个函数对象,前面说函数对象都有一个显示的prototype属性,但是Function.prototype却没有prototype属性,即Function.prototype.prototype===undefined,所有Function.prototype函数对象是一个特例,没有prototype属性。
    6. Object虽是Function构造的一个函数对象,但是Object.prototype没有指向Function.prototype,即Object.prototype!==Function.prototype。


    二    Prototype跟Constructor关系
    介绍

             在 JavaScript 中,每个函数对象都有名为“prototype”的属性(上面提到过Function.prototype函数对象是个例外,没有prototype属性),用于引用原型对象。此原型对象又有名为“constructor”的属性,它反过来引用函数本身。这是一种循环引用(i.e. Animal.prototype.constructor===Animal)。
            通过以下例子跟内存效果图来分析Prototype、constructor间的关系。
    console.log('**************constructor****************');
    console.log('anim.constructor===Animal:'+(anim.constructor===Animal)) ; //true
     console.log('Animal===Animal.prototype.constructor:'+(Animal===Animal.prototype.constructor)) ; //true
     console.log('Animal.constructor===Function.prototype.constructor:'+(Animal.constructor===Function.prototype.constructor)); //true
     console.log('Function.prototype.constructor===Function:'+(Function.prototype.constructor===Function)); //true
     console.log('Function.constructor===Function.prototype.constructor:'+(Function.constructor===Function.prototype.constructor)); //true
    console.log('Object.prototype.constructor===Object:'+(Object.prototype.constructor===Object)); //true
     console.log('Object.constructor====Function:'+(Object.constructor===Function)); //true

     prototype、constructor内存关系图(在Function、Object、Prototype关系图上加入constructor元素):

    8199006

    上图中,红色箭头表示函数对象的原型的constructor所指向的对象。
    1. 注意Object.constructor===Function;本身Object就是Function函数构造出来的
    2. 如何查找一个对象的constructor,就是在该对象的原型链上寻找碰到的第一个constructor属性所指向的对象。
    参考:
    http://www.libuchao.com/2012/05/14/prototypes-in-javascript/ (JavaScript 的原型对象 Prototype)
    http://rockyuse.iteye.com/blog/1426510 (理解js中的原型链,prototype与__proto__的关系)