^ 回到顶部
  • 人生没有定律,每个人都有自己的节奏
  • 本站wordpress建站教程均通过实践后发布,希望可以帮到你
  • 希望你的坚持,都是因为热爱,而不是因为不甘心
  • 5年wordpress建站经验,5星服务品质
  • 那些不愿意让你吃亏的人,才是真正值得你深交的人,也是值得你付出时间的人

关于 Js OOP 编程 创建对象的一些理解

面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

对象的含义

对象可以是汽车,人,动物,文字,表单或者任何存在的事物等等。

对象有:

属性 ------- 对象的某些特定的性质。
方法 ------- 对象能做的事情。
事件 ------- 能响应发生在对象上的事情。

我们可以通过创建一个人的对象来理解面向对象

人:

两只手,两只脚,一个头,还可以跑动。

手,脚,头,是人的属性,跑动是人的方法。

首先,我们来用最简单的方法创建一个对象

var person = {
        head: "one",
        hand: "two",
        foot: "two",
        run : function(){
            console.log("running");
        }
}

这个方法一点都不实用,因为它是创建一个单独的对象, 而这个对象和任何常见的数据结构没有任何联系。

var Person = function(){//注意,首字母大写
            this.head = "one",
            this.hand = "two",
            this.foot = "two",
            this.run = function(){
                alert("running");
            }
        }
        var Joan = new Person();
        document.write(Joan.run())// "running"

这是用构造函数创建的对象,然后我们再加上一行代码看看

var Niki = new Person();
alert(Joan==Niki) //false;

是的,现在创建了是两个不同的对象实例。

在 JavaScript 中的每个函数都有一个 prototype 的属性。 如果某个函数被用作构造函数,,则这个属性会被自动通过 new 调用创建对象的原型

console.log(Joan)

可以看到有一个 __proto__:Person,其中 __proto__ 是 Joan 的原型链。它是指向 Person 的原型。

JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做 __proto__ 的内置属性,用于指向创建它的函数对象的原型对象 prototype。

关于原型链的一些理解,在 JavaScript 高级程序设计 一书中写的非常详细。有兴趣的可以去看看,网上也有 pdf 的文档可以找到。不过建议还是买本书,支持原版嘛。

然后对 prototype 这个原型属性的任何更改能够应用于用 new Person()构造的每一个实例对象不管它是在更改之前还是更改后创建。为 Person.prototype 添加新函数.具体如下:

var Person = function(){//注意,首字母大写
            this.head = "one",
            this.hand = "two",
            this.foot = "two"
        }
        Person.prototype.run = function(){
            alert("running");
        }
        var Joan = new Person();
        Joan.run()// "running"
        alert(Joan.__proto__===Person.prototype)//'true'

可以看到,在原型中创建方法是可以调用的,同时 Joan 的原型链是指向 Person 的原型的。

再看:

var Niki = new Person();//"runing"
Person.prototype.run = function(){
    alert("running running")
}
Joan.run()//"running running"
Niki.run()//"running running"

看,修改 Person 的原型方法,所有被 new Person() 创建的对象实例中的方法都被修改了,因为所有实例中共用的是同一个原型方法 run。这就是原型的一种应用。

这就是关于创建对象的一些理解。

出处:关于 JS OOP 编程 创建对象的一些理解

历史上的今天:
让小雨知道,这篇文章帮到了你

展开阅读全文

评论 0

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

登录

忘记密码 ?

切换登录

注册