美文网首页
js面向对象基础操作1

js面向对象基础操作1

作者: likeli | 来源:发表于2017-12-20 19:49 被阅读0次

面向对象与面向过程

  • 定义
    面向过程:是一种以过程为中心的编程思想。,注重解决问题的步骤分析问题需要的每一步,实现函数依次调用
    面向对象:面向对象就是抛开计算机思维,使用生活中的思维方式进行的编程方式
  • 区别和联系
    面向过程编程:注重解决问题的步骤,分析问题需要的每一步,实现函数依次调用
    面向对象编程:注重问题中的对象,分析问题中对象的联系,实现对象间的通讯解决问题

面向对象具体分析

  • 定义面向对象的方式
    属性或者方法定义在原型上,对象的原型proto,对象由它本身和它的概念共同构成的

    //方式1
    var obj={
      name:"李四",
      age:19,
      };
    //方式2
    var obj2=new Object();
    //方式3
    var obj3=Object.create({name:"张三",age:20});
    
  • 对象与JSON之间的转换

    obj2={
         height:"178cm", 
         hobby:function(){
             console.log("喜欢篮球");
         }
         }
     console.log(obj2)
     var json='{"name":"李四","age":"18","sex":"男"}';
     console.log(json);
     ////对象转换成JSON
     var json1=JSON.stringify(obj2);
     console.log(json1);
     ////JSON串转换成对象
     var newobj=JSON.parse(json);
     console.log(newobj);
    
运行结果: AE803EF3-E453-4D89-9ACF-750ED88B1FED.png
  • 传值和传址问题
    传址 对象赋值取相同的内存地址,复杂的数据类型传址
    通过JSON可以解决传址问题
    传址
    var arr=[1,2,3,4,5];
    var arr2=arr;
    arr2[1]=6;
    console.log(arr);
    运行结果[1,6,3,4,5]
    传值
    var arr2=JSON.parse(JSON.stringify(arr));
    arr2[1]=6;
    console.log(arr);
    运行结果:[1,2,3,4,5]
    传址和传值问题是比较麻烦而且重要的问题因为传址的话可能会造成数据混乱,所以需要我们时刻注意着,下面的一个例子也是传址传值问题

    function Person(sex, height) {
          this.sex = sex;
          this.height = height;
          //          this.hobby=function(){
          //              console.log("吃苦耐劳")
          //          }
      }
      Person.prototype.hobby = function() {
          console.log("我是人类")
      }
    
      function Student(sex) {
          //Person.call(this,sex);
          Person.apply(this, [sex]);
          //Person.bind(this)(sex);
          this.action = function() {
              console.log("贪玩");
    
          }
      }
      //涉及到传址的问题
      //Student.prototype=Person.prototype
      //重新写子集的方法也会影响到父级
      //      解决传址问题
      function Link() {};
      Link.prototype = Person.prototype;
      Student.prototype = new Link();
      console.log(Student.prototype);
    //        Student.prototype.hobby =       function() {
    //            console.log("我是")
    //        }
      //      var newStudent=new Student("男");
      var newStudent = new Student("男");
      //var newStudent=new Student("男");
      console.log(newStudent.sex);
      newStudent.hobby();
      newStudent.action();
      var newPerson = new Person("男", "182cm");
      console.log(newPerson)
      newPerson.hobby()
    

如果这个例子能够看懂的话说明你已经理解了什么是传址传值了

相关文章

  • js面向对象基础操作1

    面向对象与面向过程 定义面向过程:是一种以过程为中心的编程思想。,注重解决问题的步骤分析问题需要的每一步,实现函数...

  • JS面向对象基础操作2

    构造函数 类似于类的概念 约定俗成 首字母大写 简单举个例子:function Dog(name, age, se...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(五)_继承

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • js面向对象

    本文将循序渐进的介绍js面向对象的基础知识。 什么是面向对象呢? 面向对象编程 (OOP : Object Ori...

  • JS面向对象(基础)

    一、面向过程和面向对象的区别、联系 1.面向过程编程:注重解决问题的步骤,分析问题需要的每一步,实现函数依次调用。...

  • JavaScript笔记(一)

    一、面向对象面向过程的区别 1、什么是js对象 js对象:属性和方法的集合,js所有数据都可以看成对象...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

网友评论

      本文标题:js面向对象基础操作1

      本文链接:https://www.haomeiwen.com/subject/hkknwxtx.html