JavaScript的原型链类笔记

时间:2022-08-24 22:25:52
JavaScript的原型链类笔记
一 原型链类创建
1、创建对象有几种方法
a、第一种方式:字面量
var o1={name:'01'};
var o11=new Object({name:'011'});
b、第二种方式:通过构造函数
var M=function(){
this.name="02";
}
var o2=new M();
c、第三种方式: Object.create
var P={name:'03'};
var o3=Object.create(P);
2、原型、构造函数、实例、原型链之间的联系
JavaScript的原型链类笔记
 
  Instanceof 的原理
JavaScript的原型链类笔记
New 运算符
JavaScript的原型链类笔记
var new2=function(func){
var o=Object.create(func.prototype);
var k=func.call(o);
if(typeof k==='object'){
return k;
}else{
return o;
}
}
3、jquery 如何使用原型
JavaScript的原型链类笔记
jQuery 原型实现
JavaScript的原型链类笔记
为何要把原型方法放在 $.fn ?
JavaScript的原型链类笔记
(function (window) {

    var jQuery = function (selector) {
        return new jQuery.fn.init(selector)
    }

    jQuery.fn = {
        css: function (key, value) {
            console.log(key,value,'css');
        },
        html: function (value) {
            console.log(value,'html');
        }
    }

    var init = jQuery.fn.init = function (selector) {
        var slice = Array.prototype.slice
        var dom = slice.call(document.querySelectorAll(selector))

        var i, len = dom ? dom.length : 0
        for (i = 0; i < len; i++) {
            this[i] = dom[i]
        }
        this.length = len
        this.selector = selector || ''
    }

    init.prototype = jQuery.fn

    window.$ = jQuery

})(window)
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p>jquery test 1</p>
    <p>jquery test 2</p>
    <p>jquery test 3</p>


    <div id="div1">
        <p>jquery test in div</p>
    </div>


    <script type="text/javascript" src="./my-jquery.js"></script>
    <script type="text/javascript">
        var $p = $('p')
        $p.css('font-size', '40px')


        var $div1 = $('#div1')
        $div1.css('color', 'blue')
    </script>
</body>
</html>
JavaScript的原型链类笔记
好处:
只有 $ 会暴露在 window 全局变量
将插件扩展统一到 $.fn.xxx 这一个接口,方便使用