开发者社区> mcy247> 正文

JS函数的原型及对象,对象方法,对象属性的学习

简介:
+关注继续查看

看一个简单的例子:

<script type="text/javascript">
        // 以下是对函数,对象,对象方法,对象属性及原型作一个简单的实例说明:
        var test = test1 = test2 = function (width, height) { //同时建立多个函数(指定同一个对象的对象方法的实例)
            return new test.fn.init(width, height);
        };
        test.prototype = test.fn = {
            init: function (width, height) { alert("作者:" + this.Author + "宽为:" + width + ",高为:" + height); },//对象方法(函数)
            Author: "张占岭(Lose)" //对象属性
        };
 
        test(800, 600);
        test1(400, 300);
      
    </script>

再来看一个访jquery的选择器是如何使用它们的:

<script type="text/javascript">
 
 
 
        // Jquery的选择器是怎么炼成的.
        // 作者:张占岭
        // 相关知识点:JS对象,原型,JS正则表达式,对象方法,对象属性等
        // 定义变量 undefined 方便使用
        var zzlQuery = window.zzlQuery = function (selector, context) { //定义一个函数zzlQuery
            return new zzlQuery.fn.init(selector, context); //函数返回一个对象
        },
        toString = Object.prototype.toString, //object 等于object的原型
         idExpr = /^#([\w-]+)$/; //查询是否为一个ID
        // 设置 jQuery 的原型对象, 用于所有 jQuery 对象共享
        zzlQuery.fn = zzlQuery.prototype = {                        // #74
            length: 0,                                          // #190
            version: "1.0.0",                                    // # 187
            // 这是一个示例,仅仅提供两种选择方式:id 和标记名
            init: function (selector, context) {                // #75
                // Handle HTML strings
                if (typeof selector === "string") {
                    // Are we dealing with HTML string or an ID?
                    match = idExpr.exec(selector); //执行一个正则表达式
                    // Verify a match, and that no context was specified for #id
                    if (match && match[1]) {
                        var elem = document.getElementById(match[1]);
                        if (elem) {
                            this.length = 1;
                            this[0] = elem;
                        }
                    }
                    else {
                        // 直接使用标记名
                        var nodes = document.getElementsByTagName(selector);
                        for (var l = nodes.length, j = 0; j < l; j++) {
                            this[j] = nodes[j];
                        }
                        this.length = nodes.length;
                    }
                    this.context = document;
                    this.selector = selector;
                    return this;
                }
            },
 
            // 代表的 DOM 对象的个数
            size: function () {
                return this.length;
            },
            // 用来设置 css 样式
            css: function (name, value) {
                this.each(
                    function (name, value) {
                        this.style[name] = value;
                    },
                    arguments       // 实际的参数以数组的形式传递
                    );
                return this;
            },
            // 用来设置文本内容
            text: function (val) {
                if (val) {
                    this.each(function () {
                        this.innerHTML = val;
                    },
                    arguments       // 实际的参数以数组的形式传递
                    )
                }
                return this;
            },
            // 用来对所有的 DOM 对象进行操作
            // callback 自定义的回调函数
            // args 自定义的参数
            each: function (callback, args) {                   // #244
                return zzlQuery.each(this, callback, args);
            }
        }
        // init 函数的原型也就是 jQuery 的原型
        zzlQuery.fn.init.prototype = zzlQuery.prototype;            // #303
        // 用来遍历 jQuery 对象中包含的元素
        zzlQuery.each = function (object, callback, args) {       // #550
            var i = 0, length = object.length;
            // 没有提供参数
            if (args === undefined) {
                for (var value = object[0];
                    i < length && callback.call(value, i, value) !== false;
                     value = object[++i])
                { }
            }
            else {
                for (; i < length; ) {
                    if (callback.apply(object[i++], args) === false) {
                        break;
                    }
                }
            }
        }
        zzlQuery("h2").text("Hello, world.").css("color", "red");  //调用涵数
 
 
    </script>

看完之后是不是你也想说:哇,原来JS也能面向对象呀!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:JS函数的原型及对象,对象方法,对象属性的学习,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端祖传三件套JavaScript的DOM之节点层次、类型、属性
随着互联网的不断发展,前端技术也在不断地更新迭代。但是,无论怎么更新变化,JavaScript、DOM、CSS 三件套的重要性始终不可替代。其中,JavaScript 的作用尤为关键。本文将聚焦于 JavaScript 中的 DOM,讨论节点层次、类型和属性等概念。
18 0
js中函数内部属性arguments和this以及方法apply()和call()
js中函数内部属性arguments和this以及方法apply()和call()
17 0
前端祖传三件套JavaScript的对象之基础概念的属性
在 JavaScript 中,对象是一种非常重要的数据类型,用于表示一组相关属性和方法。每个对象都有一些属性,这些属性可以是数据属性或访问器属性。本文将介绍对象属性的概念、分类和使用方法。
15 0
JavaScript 对象、属性和方法
JavaScript 对象、属性和方法
18 0
JavaScript 能够改变 HTML 属性
JavaScript 能够改变 HTML 属性
37 0
【JavaScript】23_类与属性
# 2、类 使用Object创建对象的问题: 1. 无法区分出不同类型的对象 2. 不方便批量创建对象 在JS中可以通过类(class)来解决这个问题: 1. 类是对象模板,可以将对象中的属性和方法直接定义在类中 定义后,就可以直接通过类来创建对象 2. 通过同一个类创建的对象,我们称为同类对象 可以使用instanceof来检查一个对象是否是由某个类创建 如果某个对象是由某个类所创建,则我们称该对象是这个类的实例 语法: class 类名 {} // 类名要使用大驼峰命名 const 类名 = class {} 通过类创建对象 new 类() ```htm
29 0
【JavaScript】14_修改对象和属性与方法
# 6、改变量和改对象 ## 修改对象(name:"猪八戒") - 修改对象时,如果有其他变量指向该对象 ​ 则所有指向该对象的变量都会受到影响 ## 修改变量(obj) - 修改变量时,只会影响当前的变量 ​ 在使用变量存储对象时,很容易因为改变变量指向的对象,提高代码的复杂度 ​ 所以通常情况下,声明存储对象的变量时会使用const ​ 注意: ​ const只是禁止变量被重新赋值,对对象的修改没有任何影响 ```html <script>
27 0
【JavaScript】13_枚举属性+可变类型
# 4、枚举属性 枚举属性,指将对象中的所有的属性全部获取 for-in语句 \- 语法: for(let propName in 对象){ ​ 语句... } \- for-in的循环体会执行多次,有几个属性就会执行几次, 每次执行时,都会将一个属性名赋值给我们所定义的变量 \- 注意:并不是所有的属性都可以枚举,比如 使用符号添加的属性 ```html <script> let obj = { name:'孙悟空', age:12, gender:'
29 0
【JavaScript】12_对象的属性与对象字面量
# 2、对象的属性 ## 属性名 - 通常属性名就是一个字符串,所以属性名可以是任何值,没有什么特殊要求 但是如果你的属性名太特殊了,不能直接使用,需要使用[]来设置 虽然如此,但是我们还是强烈建议属性名也按照标识符的规范命名 - 也可以使用符号(symbol)作为属性名,来添加属性 获取这种属性时,也必须使用symbol **使用symbol添加的属性,通常是那些不希望被外界访问的属性** - **使用[]去操作属性时,可以使用变量** ## 属性值 - 对象的属性值可以是任意的数据类型,也可以是一个对象 使用typeof检查一个对象时,会返回object
27 0
js基础笔记学习240通过属性读取样式1
js基础笔记学习240通过属性读取样式1
24 0
js基础笔记学习241通过属性读取样式2
js基础笔记学习241通过属性读取样式2
23 0
js基础笔记学习105-属性
js基础笔记学习105-属性
49 0
js基础笔记学习219属性节点2
js基础笔记学习219属性节点2
14 0
js基础笔记学习218属性节点1
js基础笔记学习218属性节点1
14 0
js基础笔记学习215元素得属性和节点2
js基础笔记学习215元素得属性和节点2
20 0
+关注
mcy247
做自己的太阳 无需凭借谁的光
文章
问答
视频
相关电子书
更多
在 IoT 设备进行 JavaScript 开发的探索之路
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多