单例模式 ??(基于对象,不能批量生产)
 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. LeetCode: Linked List Cycle [141]

    [题目] Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without usi ...

  2. IIS7如何部署asp.net网站 (asp.net mvc 5 , asp.net 4.5 , asp.net 4.0 都可以 )

      第一步:发布网站 右键asp.net web项目,选择发布, 然后新建配置文件名称并选择 "文件系统" 发布方法. 目标位置选择本地新建的文件夹如: IISWebSite 第二 ...

  3. poj_2773

    题目的愿意非常easy.给你一个n,求在升序排列的情况下,第k个与之相互素的数. 解法:首先我们要知道gcd(b×t+a,b)=gcd(a.b),那么接下来就非常easy了.全部与之互素的数都是以ph ...

  4. Linux下自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...

  5. mysql中实现分类汇总功能

    1.创建测试表: CREATE TABLE test_ROLLUP_1 ( StateCode ), DepCode ), SendMoney INT ); 2.插入测试语句: INSERT INTO ...

  6. linux下查看cc攻击

    什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. 查看所有80 ...

  7. SQL 查询结果为 XML

    --原始数据 SELECT  OrderNO,CreateDate,Username,Address FROM   Whir_Order_OrderInfo --1.AUTO模式 SELECT  Or ...

  8. Java并发编程(九):拓展

    java多线程死锁理解 Java多线程并发最佳实践 Spring与线程安全 HashMap与ConcurrentHashMap 关于java集合类HashMap的理解     ,      数据结构之 ...

  9. Objective-C之@protocol

    转自:http://www.cnblogs.com/hxxy2003/archive/2011/10/24/2222838.html @protocol是Objective-C中的接口定义方式,也就是 ...

  10. eclipse不自动弹出提示的解决办法(eclipse alt+/快捷键失效)centos 6.7

    1.次方法用于没有一点提示的情况:依次打开eclipse上面的windows ——preferences ——java ——editor —— content assist ,在右上方有一行“sele ...