Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Object Oriented Thinking

tiagojacintotiagojacinto541 downloads

Add inheritance-like behavior to notes.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates7

Add inheritance-like behavior to notes.

Usage

1. Extend

In a note's frontmatter, add the property (default: extends) with a link to the parent note:

---
extends: [[ParentNote]]
---

2. Query

Using utility methods: getObjectFileByPath(path).isDescendantOf(parentObjectFile)

Methods

oot.getObjectFileByLink(link: [[${string}]]): TFile & {isDescendantOf: (parentFile: TFile) => boolean} | null

Examples
const taskObjectFile = oot.getObjectFileByLink("[[Task]]")

dv.table(["File"], dv.pages().where(page => {
  const pageObjectFile = oot.getObjectFileByPath(page.file.path)

  return pageObjectFile?.isDescendantOf(taskObjectFile)
}).map(p => [p.file.link]))

oot.getObjectFileByPath(path: string): TFile & {isDescendantOf: (parentFile: TFile) => boolean} | null

Examples
const currentObjectFile = oot.getObjectFileByPath(dv.current().file.path);

dv.table(
    ['File'],
    dv
        .pages()
        .where((page) => {
            const pageObjectFile = oot.getObjectFileByPath(page.file.path);

            return pageObjectFile?.isDescendantOf(currentObjectFile);
        })
        .map((p) => [p.file.link]),
);

Defining your own functions

You can define your own functions like this or use javascript loader plugins like CustomJS:

const isDescendantOf = (parentObjectFile) => (page) => oot.getObjectFileByPath(page.file.path)?.isDescendantOf(parentObjectFile) ?? false

const taskObjectFile = oot.getObjectFileByLink("[[Inbox/Task|Task]]")

dv.table(["File"], dv.pages().where(isDescendantOf(taskObjectFile)).map(p => [p.file.link]))

Manually installing the plugin

  • Copy over main.js, styles.css, manifest.json to your vault VaultFolder/.obsidian/plugins/your-plugin-id/.
81%
HealthExcellent
ReviewSatisfactory
About
Add inheritance-like behavior to notes by setting an extends frontmatter link to a parent note (e.g., extends: [[ParentNote]]). Query relationships programmatically with oot.getObjectFileByLink and oot.getObjectFileByPath, and use the returned isDescendantOf method to filter pages in Dataview or custom scripts.
PropertiesLinksIntegrations
Details
Current version
1.0.10
Last updated
9 months ago
Created
Last year
Updates
7 releases
Downloads
541
Compatible with
Obsidian 1.8.7+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
tiagojacintotiagojacinto
github.com/TiagoJacinto
GitHubtiagojacinto
  1. Community
  2. Plugins
  3. Properties
  4. Object Oriented Thinking

Related plugins

Advanced Canvas

Supercharge your canvas experience. Create presentations, flowcharts and more.

BRAT

Easily install a beta version of a plugin for testing.

Smart Connections

Find related notes and excerpts while writing. Your link building copilot displays relevant content in graph + list view. A local embedding model powers semantic search. Zero setup. No API key.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Local REST API with MCP

Unlock your automation needs by interacting with your notes over a secure REST API.

Breadcrumbs

Visualise the hierarchy of your vault using a breadcrumb trail or matrix view.

Excalidraw

Visual PKM powerhouse. Create and edit Excalidraw drawings.

Maps

Adds a map layout to bases so you can display notes as an interactive map view.

Multi Properties

Add properties to multiple notes at once. Either right-click a folder or select multiple notes and right-click the selection.

Zotero Integration

Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.