js22--链式调用

简介:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type=text/javascript charset=utf-8>
            
        // 1 简单的函数链式调用
        function Dog(){
            this.run = function(){
                alert('dog is run...');
                return this ;
            };
            this.eat = function(){
                alert('dog is eat...');
                return this ;
            };
            this.sleep = function(){
                alert('dog is sleep...');
                return this ;
            }
        }
        var d1 = new Dog();
        d1.run().eat().sleep();
        d1.eat();
        d1.sleep();

        </script>
    </head>
</html>
复制代码
复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>
        <script type=text/javascript charset=utf-8 src="../commons/jquery.js" ></script>
    </head>
    <body>
        <input id="inp" type="button" value="点击我" />
        <script type=text/javascript charset=utf-8>
        // 程序启动的时候  里面的代码直接执行了,var的外部都不能访问,什么都不加的通过window访问,this通过相应对象访问。
        (function(window , undefined){//函数形参
            // $ 最常用的对象 返回给外界, 大型程序开发 一般使用'_'作为私用的对象(规范)
            function _$(arguments){
                //id选择器
                var idselector = /#\w+/ ;
                this.dom ;//实例属性,arguments[0] = '#inp'
                if(idselector.test(arguments[0])){//正则表达式.test(string)
                    this.dom = document.getElementById(arguments[0].substring(1));
                } else {
                    throw new Error(' arguments is error !');
                }
            };
            
            // 在Function类上扩展一个可以实现链式编程的方法,函数_$也可以用method这个方法
            Function.prototype.method = function(methodName , fn){
                this.prototype[methodName] = fn ;
                return this ; //_$.method,this就是函数类_$。
            }
            
            // 在函数的原型对象上 加一些公共的方法
            _$.prototype = {
                constructor : _$ ,
                addEvent:function(type,fn){
                    // 给你的得到的元素 注册事件
                    if(window.addEventListener){// FF 
                        this.dom.addEventListener(type , fn);
                    } else if (window.attachEvent){// IE
                        this.dom.attachEvent('on'+type , fn);
                    }
                    return this ; 
                },
                setStyle:function(prop , val){
                    this.dom.style[prop] = val ;
                    return this ;
                }
            };
            
            window.$ = _$ ;//函数名表示函数地址
            
            _$.onReady = function(fn){ // 给函数(类)加静态方法,只能通过函数名(类名)访问。onReady是这个匿名函数的名字,fn是函数的参数。
                window.$ = function(){//$("#div")返回jquery对象
                    return new _$(arguments);//有参构造函数,
                };
                fn();
                // 3 实现链式编程
                _$.method('addEvent',function(){
                    //
                }).method('setStyle',function(){
                    //
                });
                 
            };
            
        })(window); // 函数立即执行,传入实参window,
                
                
                
                    
        $.onReady(   function(){
            var inp = $('#inp');
            alert(inp.dom.nodeName);
            alert($('#inp'));
            inp.addEvent('click',function(){
                alert('我被点击了!');
            }).setStyle('backgroundColor' , 'red');
        });

        </script>        
        
    </body>
    
    
</html>
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/6881905.html,如需转载请自行联系原作者

相关文章
|
4月前
|
Linux 虚拟化 iOS开发
GNS3 v3.0.5 - 开源免费网络模拟器
GNS3 v3.0.5 - 开源免费网络模拟器
332 3
GNS3 v3.0.5 - 开源免费网络模拟器
led点阵---显示数字或汉字(内含代码+注释+图片)
led点阵---显示数字或汉字(内含代码+注释+图片)
1084 0
led点阵---显示数字或汉字(内含代码+注释+图片)
|
SQL 存储 分布式计算
一文快速了解MaxCompute
一文快速了解MaxCompute 很多刚初次接触MaxCompute的用户,面对繁多的产品文档内容以及社区文章,往往很难快速、全面了解MaxCompute产品全貌。同时,很多拥有大数据开发经验的开发者,也希望能够结合自身的背景知识,将MaxCompute产品能力与开源项目、商业软件之间建立某种关联和映射,以快速寻找或判断MaxCompute是否满足自身的需要,并结合相关经验更轻松地学习和使用产品。
6588 0
|
6天前
|
人工智能 运维 安全
|
4天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
558 17
|
11天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
911 109
|
5天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。