$(function(){ })的使用

JQuery 的代码我们通常会包裹在一个$(function(){})函数中,jq 的$(function(){})也就是$(document).ready(function(){})的简写,与之对应的原生 js 的window.onload事件,这俩者之间到底有什么区别呢?

$(function () {
    console.log("ready执行");
});

$(function() {
    console.log("ready1执行");
});

window.onload = function () {
    console.log('load执行');
};
window.onload = function () {
    console.log('load1执行');
}

我们来看一下控制台中输出的结果:

ready执行
ready1执行
load1执行

这里可以看出两点不同: 
1.$(function(){})不会被覆盖,而window.onload会被覆盖,个人感觉$(function(){})不会被覆盖的原因是将其放入到了一个队列中,在对应时机一次出队。 
2. $(function(){})window.onload执行前执行的,$(function(){})类似于原生 js 中的DOMContentLoaded事件,在 DOM 加载完毕后,页面全部内容(如图片等)完全加载完毕前被执行。而window.onload会在页面资源全部加载完毕后才会执行。

DOM 文档加载步骤:

  1. 解析 HTML 结构
  2. 加载外部的脚本和样式文件
  3. 解析并执行脚本代码
  4. 执行 $(function(){}) 内对应代码
  5. 加载图片等二进制资源
  6. 页面加载完毕,执行 window.onload
<think>好的,我现在需要帮助用户理解PHP中的$this关键字的作用和用法。根据用户提供的四个引用内容,我需要整理出清晰、准确的回答,并生成相关问题。 首先,我要确定用户的需求。用户可能刚接触PHP的面向对象编程,对$this的使用场景和意义不太清楚。需要解释$this的基本概念,并结合示例说明其用法。 从引用中得知,$this是一个指向当前对象实例的伪变量,只能在类的内部使用,用于访问该对象的属性和方法。比如在类的方法中,无法预知实例化的对象名称,因此用$this代替。例如,在类Cart中,访问属性时用$this->items而不是假设对象名为$cart或$another_cart。 接下来,需要总结$this的关键点:指向当前实例、仅内部可用、访问属性和方法的方式。同时要注意与self和parent的区别,但用户的问题主要聚焦于$this,这部分可以简要提及或放在相关问题里。 然后,考虑如何结构化解说。可能分为作用、基本用法、注意事项、代码示例等部分。代码示例很重要,能帮助用户直观理解。根据引用中的例子,比如设置和获取属性,实例化后的不同对象调用方法时$this的指向变化。 注意事项方面,要提到不能在静态方法中使用$this,只能在类内部使用,避免指向错误。同时,结合引用中的错误示例说明正确用法。 生成的相关问题需要围绕$this的扩展知识,比如与self的区别、常见错误、静态方法中的使用限制等。确保问题能引导用户深入理解。 最后,检查回答是否符合系统级指令:使用正确的中文,数学公式格式(虽然这里可能用不到),引用标记正确,代码块使用正确语法,问题部分合理。</think>### PHP中$this关键字的作用和用法详解 #### 一、$this的核心作用 `$this`是PHP面向对象编程中的**伪变量**,专门用于在类内部表示**当前对象实例**。它相当于一个指向"自己"的指针,在实例化时动态绑定到具体的对象[^1][^4]。 #### 二、基本用法说明 1. **访问对象属性** ```php class User { public $name; public function setName($name) { $this->name = $name; // 等价于当前对象->name } } ``` 2. **调用对象方法** ```php class Calculator { public function add($a, $b) { return $a + $b; } public function calculate() { return $this->add(5, 3); // 调用本类方法 } } ``` #### 三、关键特性说明 | 特性 | 说明 | |-----------------------|--------------------------------------------------------------------| | 动态绑定 | 根据调用时的对象决定指向(如`$obj->method()`中的`$this`指向`$obj`)[^4] | | 作用域限制 | 只能在类的**非静态方法**中使用 | | 访问控制 | 可以访问本类的private/protected属性(同对象作用域) | | 不可用于静态方法 | 静态方法属于类而非实例,使用`self::`代替[^2] | #### 四、典型应用场景 ```php class Database { private $connection; public function connect() { $this->connection = new PDO(...); } public function query($sql) { return $this->connection->query($sql); } } // 使用示例 $db = new Database(); $db->connect(); // $this指向$db实例 ``` #### 五、常见错误示例 ```php class ErrorExample { public static function wrong() { $this->name = 'test'; // 错误!静态方法中不能使用$this } public function missingArrow() { this->name = 'test'; // 错误!缺少箭头符号$ } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值