单例模式 ??(基于对象,不能批量生产)
 var person = {
            name: "ywb",
            sayHi: function () {
                alert();
            } ,
            0:'0',
            1 :'1'
  } 
 person.sayHi();
     for (var k in person) {
            //k是属性名
            //得到属性值 person[k]
            alert(k);
            alert(person[k]);
        }
特点
1,我们定义的这些属性和值都是对我们当前这个对象的描述
    定义属性名的时候可以用数字,把可以用数字这种形式成为类数组
2 , 对象的属性之间有可能也是有关联的
3,通过for in遍历对象的时候,如果有数字的属性名,就先遍历数字
for in循环中获取对象的属性值,只能用obj[属性名]的方式。
--------------------------------------------------------------------
工厂模式
定义一个方法,方法内部创建一个Object数据类型,然后返回这个对象。
       function factory(name, age) {
            var obj = new Object();
            obj.name = name;
            obj.age = age;
            obj.sayHi = function () {
                alert("hello," + name);
            }
            return obj;
        }
        var ywb = factory("ywb", 18);
        ywb.sayHi();
工厂模式所有的对象类型都是一个object
构造函数模式
个人理解:更像class一样,创建对象去new一个class
通过new这种方式,出来的结果是一个实例。
       function person(name, age) {
            this.name = name;
            this.age = age;
            this.sayHi = function () {
                alert("hello," + name);
            }
        }
        var ywb = new person("ywb", 18);
        ywb.sayHi();
           alert(ywb instanceof Person ); //可以确定ywb是Person的实例
这时候,这个实例(对象)是谁,this就指向谁。this就是这个实例的上下文in
因为每一次实例化一个function,都会在内存中存这个function的字符串
原型模式
创建一个对象,我们不仅在内存中开辟了空间,将自己私有的键值对存进来,还有个系统自带的属性_proto_。
在声明function时,它也有一个自己的属性,就是prototype。
prototype也有_proto_属性
      function factory(age) {
            this.name = "hart";
            this.age = age;
        }
        factory.prototype.sayHi = function () {
            alert("hello," + name);
        }
        factory.prototype.name = "ywb";
        var p1 = new factory(11);
       
        p1.__proto__ = null;
        alert(p1.name);
如果我们的某个实例想获取类中的prototype上定义的方法和属性,我们的原理是实例中默认的_proto_属性去获取。
调用一个方法或属性,首先去其私有属性上找,没有找到才去原型链上找。
Object是所有实例的基类。
p1.__proto__.name 就是去原型上找而不去属性上找

如果你觉得我的文章对您有帮助,给点鼓励,谢谢

我的JavaScript笔记--面向对象的更多相关文章

  1. javascript笔记 面向对象

    Javascript是一种面向对象的弱语言,既然有面向对象,就有继承 继承: 1.call函数和apply函数:区别在于它们参数上的不同,固定参数的用call,可变参数的用apply.换句话说,就是a ...

  2. javascript笔记—面向对象

    什么是对象: 对象是一个整体,对外提供一些操作. 什么是面向对象: 使用对象时,只关注对象提供的功能,不关注其内部细节,例如jquery 面向对象是一种通用思想,并非只有编程中能用,任何事情都可以用. ...

  3. JavaScript笔记——面向对象与原型

    JavaScript也是一门面向对象的语言.面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript竟然没有class,因此它的面向对象也 ...

  4. JavaScript高程第三版笔记-面向对象编程

    之前有篇博客曾提到过一点js的面向对象编程:js面向对象编程. 这里就结合js高程详细剖析一下javascript的面向对象编程. 前序: 1⃣️Object.defineProperty() var ...

  5. [Effective JavaScript 笔记]第3章:使用函数--个人总结

    前言 这一章把平时会用到,但不会深究的知识点,分开细化地讲解了.里面很多内容在高3等基础内容里,也有很多讲到.但由于本身书籍的篇幅较大,很容易忽视对应的小知识点.这章里的许多小提示都很有帮助,特别是在 ...

  6. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  9. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

随机推荐

  1. IOS炫酷的引导界面

    代码地址如下:http://www.demodashi.com/demo/11246.html 一.准备工作 1.先用时ps工具制作好图片 2.然后计算好每张图片通过滑动视图的偏移量来改变图片的位置 ...

  2. 阿里云云盘扩容数据盘_Linux

    随着业务的增长,您的数据盘容量可能无法满足数据存储的需要,这时您可以使用 磁盘扩容 功能扩容数据盘.   说明 挂载在实例上的数据盘,只有当实例处于 运行中 (Running) 或 已停止(Stopp ...

  3. jboss部署web应用

    http://liufei-fir.iteye.com/blog/759772初次部署jboss的web应用,把tomcat/weblogic下的工程移植到jboss上发布 一.修改JBOSS应用服务 ...

  4. 中小型研发团队架构实践:分布式协调服务ZooKeeper

    一.ZooKeeper 是什么 Apache ZooKeeper 由 Apache Hadoop 的子项目发展而来,于 2010 年 11 月正式成为了 Apache 的顶级项目. 相关厂商内容 优秀 ...

  5. STL容器分析--map

    映射和多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速和高效的检索.

  6. Hadoop文件解压缩

    Class org.apache.hadoop.io.compress .CompressionCodecFactory A factory that will find the correct co ...

  7. Python基础--字典:当索引不好用时

    当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'1 ...

  8. 点滴积累【C#】---C#实现上传照片到物理路径,并且将地址保存到数据库,

    效果: 思路: 首先,获取图片物理地址,然后进行判断将图片保存到文件夹下,再将图片的信息保存到数据库. 数据库: create table image1 ( ID ,) primary key, Im ...

  9. vivado编译出错 [Synth 8-729] [Synth 8-787]

    http://www.cnblogs.com/pejoicen   打开vivado工程后,发现右上角如下图所示: 重新编译这两个ip核后,对整个工程synthesis,工程报错 [Synth 8-7 ...

  10. PHP系统学习1

    1.php变量 2.php引用变量 $name1=&$name2; 3.全局变量 4.魔术变量__LINE__,__FILE__,__FUNCTION__,__CLASS__,__METHOD ...