js为什么子类对象可以直接访问父类的属性父类的方法
时间: 2024-05-17 11:12:08 浏览: 97
这是因为在 JavaScript 中,子类继承了父类的原型链,也就是说子类对象可以通过原型链访问到父类的属性和方法。在子类对象上访问属性或方法时,如果找不到该属性或方法,JavaScript 引擎会通过原型链向上查找,直到找到该属性或方法或者到达顶层的 Object.prototype 对象为止。因此,子类对象可以直接访问父类的属性和方法。
相关问题
怎样通过子类窗口获取父类窗口点击事件所获取的数据 jquery
在子窗口中获取父窗口点击事件获取的数据,可以通过在子窗口中监听 `window.opener` 的事件来实现。具体的实现方式取决于使用的框架和库。
以 jQuery 为例,可以在子窗口中通过 `window.opener` 访问到父窗口,并监听父窗口触发的事件。假设父窗口有一个按钮,点击按钮会触发一个 `click` 事件,并传递一些数据,可以在子窗口中通过以下方式获取到这些数据:
在父窗口中:
```html
<button id="my-button">Click me</button>
<script>
$('#my-button').click(function() {
var data = { foo: 'bar' }; // 假设要传递的数据是一个对象
window.open('child.html', '_blank', 'width=400,height=400');
window.localStorage.setItem('my-data', JSON.stringify(data));
});
</script>
```
在子窗口中:
```html
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
var data = JSON.parse(window.localStorage.getItem('my-data'));
console.log(data); // 输出 { foo: 'bar' }
window.localStorage.removeItem('my-data');
$(window.opener.document).on('my-event', function(event, data) {
console.log(data); // 输出 { foo: 'bar' }
});
});
</script>
```
在子窗口中,获取到数据后,可以使用 `$(window.opener.document)` 来访问父窗口的 DOM,然后通过 `on` 方法来监听自定义事件,并在回调函数中处理父窗口传递过来的数据。在父窗口中,可以使用 `window.localStorage` 来存储数据,并在子窗口中读取。
js面向对象的三大特性是什么? 请分别举一个例子
三大特性分别是封装、继承和多态。
1. 封装:将对象的属性和方法封装在一个对象中,外部无法直接访问和修改对象的属性和方法,只能通过对象提供的接口进行操作。例如,一个人的信息可以被封装成一个Person对象,只有通过Person对象提供的方法才能修改或查看这个人的信息。
2. 继承:子类可以继承父类的属性和方法,并可以根据需要覆盖或扩展父类的方法。例如,一个动物类可以作为父类,猫和狗可以作为子类继承动物类的属性和方法,同时可以覆盖父类的方法实现自己特有的行为。
3. 多态:同一种方法可以根据上下文的不同表现出不同的行为。例如,一个动物类有一个makeSound方法,在猫对象中调用该方法会发出“喵喵”的声音,在狗对象中调用该方法会发出“汪汪”的声音。这就是多态的体现。