js-对象

本文详细介绍了JavaScript中的对象创建、字面量表示法、函数的使用以及this关键字的指向。通过示例展示了如何使用对象属性、函数调用以及构造函数。特别强调了this在不同调用场景下的变化,包括作为对象方法时和全局调用时的差异。此外,还讨论了参数过多时如何通过对象封装参数,提高代码灵活性。
摘要由CSDN通过智能技术生成

in运算符 可以检查该对象是否有该属性

对象是保存到堆内存中的,栈内存保存的是对象的地址 ;

当比较两个基本类型时,比的就是值,当比较的是两个引用数据类型时,比的是对象的内存地址,

对象的字面量

var obj = {};
      obj.name = "笨笨狗";
      var obj2 = {
        name :"憨憨狗",
        age : 18,
        gender: "男",
      }

 函数

函数可以封装一些功能,在需要时可以执行这些功能

//var fun = new Function( "console.log('我很开心')");这是构造函数
      function fun() {
        console.log("我很开心");
      }
      fun();
      var fun3 = function () {
        console.log(123); //匿名函数
      };
      fun3();
      function sum(a,b){
        console.log(a+b);
      }
      sum(4,7);

return 后面不价值,或者不写return 将都会返回undifined;

当函数的参数过多时,我们需要把参数封装到一个对象中,然后通过对象传递,

var people = {
        name :"笨笨",
        age : 13,
        gender : "男",
      }
      function fun(people){
        console.log("我是"+people.name+",我"+people.age+ "岁了"+"我是"+people.gender+"性");
      }

this

this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象,

1以函数形式调佣,this指向window

2以方法形式调用,this指向调佣对象。

 function fun() {
        console.log(this);
      }
      var obj = {
        name: "笨笨",
        age: 14,
        sayname: fun,
      };
      obj.sayname();//对象是obj
      fun();//对象是window全局

 

var name = "全局";
      function fun() {
        console.log(name);
      }
      var obj = {
        name: "笨笨",
        age: 14,
        sayname: fun,
      };
      var obj2 = {
        name: "憨憨",
        age: 18,
        sayname: fun,
      };

如果没有this 调用的东西就很不灵活,直接打印name 出现的结果就是全局

 如果用this的话,就会变得灵活

var name = "全局";
      function fun() {
        console.log(this.name);
      }
      var obj = {
        name: "笨笨",
        age: 14,
        sayname: fun,
      };
      var obj2 = {
        name: "憨憨",
        age: 18,
        sayname: fun,
      };
      fun();
      obj.sayname();
      obj2.sayname();

 构造函数

构造函数就是一个普通的函数,创建方式和普通函数没区别,不同的是构造函数习惯上首字母大写,构造函数和普通函数区别就是调用方式不同,普通函数是直接调用,而构造函数要使用new关键字来调用。

function creatpeople(name, age) {
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.sayhello = function () {
          alert(this.name);
        };
        return obj;
      }
      var obj2 = creatpeople("笨笨", 16);
      obj2.sayhello;
      console.log(obj2);
      obj2.sayhello;
 function creatDog(name, age) {
        var obj = new Object();//创建的是object类型的对象
        obj.name = name;
        obj.age = age;
        obj.sayhello = function () {
          alert("汪汪~");
        };
        return obj;
      }
      var dog = creatDog("狗狗", 23);
      console.log(dog);
      dog.sayhello();

创建一个构造函数,用来建造别的类型对象;

function Dog(name, age) {
        this.name = name;
        this.age = age;
        this.sayhello = function () {
          alert(this.name);
        };
      }
      var dog = new Dog("笨笨", 7);
      dog.sayhello();

但是这个这个类型就是Dog类;instanceof可以检测两个实例是否是同类型的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值